当前位置: 首页 > 知识库问答 >
问题:

Grails在weblogic中部署时无法呈现GSP

隆选
2023-03-14

当我将grails(2.4.0)项目war部署到weblogic 12.1.2中时,我面临一个问题。当部署到tomcat中时,战争效果非常好。问题是,当战争部署在weblogic中时。一旦用户登录,使用LDAP的身份验证过程也可以正常工作。接下来,应该使用GSP页面呈现主页,但weblogic似乎无法呈现GSP页面。它正在浏览器上运行404。

一旦我登录到应用程序,如果我直接使用浏览器中的任何URL,流程会转到控制器并在控制器中执行所有必需的代码执行,但它无法返回查看和渲染“渲染”块中提到的GSP页面。

我的控制器操作代码如下:

def index(){
    log.debug("**********Reached MyHomeController**********")
    MyHome myHome = new MyHome()
    myHome.setMessageId(1)
    myHome.setMessageText("***TEST MESSAGE***")

    render (view: 'myhome')
}

我尝试使用相同的控制器操作在浏览器上渲染纯文本,效果很好。即使在weblogic部署中,我也可以毫无问题地在浏览器上看到呈现的消息。

def index(){
    log.debug("**********Reached MyHomeController.testCall**********")
    render ("*@***Reached MyHomeController.testCall**********")
}

我已经验证了grails站点([此处][1])中的weblogic问题,并完成了此处提到的补救措施。但我认为,问题是请求被提交到正确的控制器,但当返回到UI时,weblogic无法找到GSP(tomcat对此没有问题)。

请帮助解决如何在weblogic中部署时呈现GSP。下面是当weblogic在浏览器上抛出404时日志中的异常:不确定它为什么试图查找*。jsp文件。

:MyHomeController-**********已到达MyHomeController*******::[2c5cb87d-29ad-4006-8294-4a1f355e124e][Lokajit\u Tikayatray]:优化DautoDirectableBeanFactory-返回单例bean“GroovyPagesSuriservice”的缓存实例::[2c5cb87d-29ad-4006-8294-4a1f355e124e][Lokajit\u Tikayatray]:GrailsControllerHelper-操作[testCall1]根据结果执行[null]和视图名称[/myHome/index]::[2c5cb87d-29ad-4006-8294-4a1f355e124e][Lokajit\u Tikayatray]:AbstractGrailsControllerHelper-操作[testCall1]已处理,创建的Spring模型和视图[ModelAndView:reference to view with name“/myHome/myHome”;model is{}]::[2c5cb87d-29ad-4006-8294-4a1f355e124e][Lokajit_Tikayatray]:SimpleRailsController-[SimpleRailsController]转发模型和视图[ModelAndView:reference to view with name“/myHome/myHome”;model is{}]with class[/myHome/myHome]:::[2c5cb87d-29ad-4006-8294-4a1f355e124e][Lokajit\u Tikayatray]:复合interceptor-postHandle SecurityContextHolderAwareRequestWrapper[org.springframework.security.web.context.httpSessionSecurity ContextRepository$Servlet3SaveToSessionRequestWrapper@320c8103],组织。springframework。安全网状物上下文HttpSessionSecurityContextRepository$SaveToSessionResponseWrapper@52ea05a0,组织。科德豪斯。非常棒。圣杯。网状物servlet。mvc。SimpleGrailsController@4720353f,ModelAndView:引用名为“/myHome/myHome”的视图;模型为{}:::[2c5cb87d-29ad-4006-8294-4a1f355e124e][Lokajit\u Tikayatray]:GrailsDispatcherServlet-渲染视图[org.codehaus.groovy.grails.web.sitemesh.SitemeshLayoutView:未命名;URL[null]],位于名为“grails”的DispatcherServlet中::[2c5cb87d-29ad-4006-8294-4a1f355e124e][Lokajit\u Tikayatray]:JstlView-转发到资源[web-INF/ls app/views/myHome/myHome.jsp]InternalResourceView“null”:[2c5cb87d-29ad-4006-8294-4a1f355e124e][Lokajit\u Tikayatray]:GrailsDispatcherServlet-错误呈现视图[org.codehaus.groovy.grails.web.sitemesh.SitemeshLayoutView:未命名;URL[null]],位于名为“grails”java的DispatcherServlet中。weblogic上的lang.NullPointerException。servlet。内部的StubSecurityHelper$ServletServiceAction。在weblogic上运行(StubSecurityHelper.java:280)。servlet。内部的StubSecurityHelper$ServletServiceAction。在weblogic上运行(StubSecurityHelper.java:254)。servlet。内部的StubSecurityHelper。weblogic上的invokeServlet(StubSecurityHelper.java:136)。servlet。内部的ServletStubImpl。在weblogic上执行(ServletStubImpl.java:341)。servlet。内部的尾过滤器。weblogic上的doFilter(TailFilter.java:25)。servlet。内部的过滤器Chainimpl。weblogic上的doFilter(FilterChainImpl.java:79)。servlet。内部的过滤器Chainimpl。weblogic上的doFilter(FilterChainImpl.java:79)。servlet。内部的过滤器Chainimpl。weblogic上的doFilter(FilterChainImpl.java:79)。servlet。内部的过滤器Chainimpl。weblogic上的doFilter(FilterChainImpl.java:79)。servlet。内部的RequestDispatcherImpl。weblogic上的invokeServlet(RequestDispatcherImpl.java:574)。servlet。内部的RequestDispatcherImpl。在weblogic上转发(RequestDispatcherImpl.java:272)。servlet。内部的过滤器Chainimpl。grails上的doFilter(FilterChainImpl.java:79)。插件。springsecurity。网状物滤器GrailsAnonymousAuthenticationFilter。grails上的doFilter(GrailsAnonymousAuthenticationFilter.java:53)。插件。springsecurity。网状物身份验证。RequestHolderAuthenticationFilter。grails上的doFilter(RequestHolderAuthenticationFilter.java:49)。插件。springsecurity。网状物身份验证。注销。可变LOGOUTFILTER。weblogic上的doFilter(MutableLogoutFilter.java:82)。servlet。内部的过滤器Chainimpl。weblogic上的doFilter(FilterChainImpl.java:79)。servlet。内部的过滤器Chainimpl。weblogic上的doFilter(FilterChainImpl.java:79)。servlet。内部的过滤器Chainimpl。weblogic上的doFilter(FilterChainImpl.java:79)。servlet。内部的过滤器Chainimpl。weblogic上的doFilter(FilterChainImpl.java:79)。servlet。内部的WebAppServletContext$ServletinLocationAction。weblogic上的wrapRun(WebAppServletContext.java:3367)。servlet。内部的WebAppServletContext$ServletinLocationAction。在weblogic上运行(WebAppServletContext.java:3333)。安全国际计算语言学协会。内部的认证主题。weblogic上的doAs(AuthenticatedSubject.java:321)。安全服务安全管理器。weblogic上的runAs(SecurityManager.java:120)。servlet。供应商。WLSSObject句柄。在weblogic上运行(WlsSubjectHandle.java:57)。servlet。内部的WebAppServletContext。DoSecureExecute(WebAppServletContext.java:2220)在weblogic。servlet。内部的WebAppServletContext。weblogic上的securedExecute(WebAppServletContext.java:2146)。servlet。内部的WebAppServletContext。在weblogic上执行(WebAppServletContext.java:2124)。servlet。内部的ServletRequestImpl。在weblogic上运行(ServletRequestImpl.java:1564)。servlet。供应商。ContainerSupportProviderImpl$WlsRequestExecutor。在weblogic上运行(ContainerSupportProviderImpl.java:254)。工作执行读取。在weblogic上执行(ExecuteThread.java:295)。工作执行读取。运行(ExecuteThread.java:254)

共有1个答案

甄文彬
2023-03-14

最后,该部署与weblogic一起工作,可以正确地从一个页面导航到另一个页面。问题在于视图文件夹的命名约定。似乎weblogic需要视图文件夹名称与框架生成的URL完全相同(区分大小写)。

日志打印:转发到资源[WEB-INF/grails-app/views/myHome/myHome.jsp]

因此,weblogic试图在“myhome”文件夹中找到“myhome”GSP文件(大写H),但我的所有视图文件夹名称都是小写的。因此,weblogic无法在URL中找到GSP。即使我将类似的JSP复制到所需的路径,它仍然无法找到它。从日志中获得线索,我将视图文件夹名称更改为与URL完全相同的大小写,效果很好。:)

Tomcat的情况并非如此。Tomcat不区分URL大小写。它能够在任何情况下找到URL路径。这就是为什么我的应用程序在tomcat上运行良好,即使URL /myHome/**,但我的视图文件夹名称是“myhome”。由于tomcat能够正确识别URL路径,因此我没有想到weblogic会对URL路径进行区分大小写的搜索(直到我用完所有可能的选项来解决问题:))。

 类似资料:
  • 我试着在这些问题中应用所有的解决方案: 在我的web.xml中,我使用了标记'res-ref-name'。 多谢!

  • 我试图在weblogic Server12.1.3中运行Spring Boot应用程序,但遇到以下错误 BlockQuoteWebLogic.Application.ModuleException:java.lang.NoSuchMethoderRorr:org.springframework.core.Annotation.AnnotationawareOrderComparator.sort(

  • 我正在将一个java项目从weblogic 8.1迁移到weblogic 12c。 根据甲骨文文档,我已经转换了以下内容。 在所有这些更改之后,生成war文件并部署在weblogic 12c服务器中,该服务器会产生如下错误 代码:

  • 我正在尝试将一个简单的SpringBoot应用程序转换为部署在WebLogic中。它在buildin TomCat服务器上运行良好。然后对其进行更改并创建一个新的war文件。当我尝试部署war文件时,我得到这个错误。 web.xml的Servlet初始值设定项 application.java文件

  • 我正在使用WebLogic 12.2.1和NetBeans开发一个REST应用程序。 在NetBeans中,我使用本地主机并毫无问题地进行部署。 当我使用Orcacle WebLogic管理工具时,系统会抛出NullPointerException。 这是应用程序配置: 这是weblogic。xml: 这是网络。xml: 这是stacktrace: weblogic。utils。编译器。ToolF

  • 当我试图在带有Jenkins和maven的weblogic 12c集群上重新部署EAR时,总是会出现以下错误: 我已经添加了