首页 文章

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

提问于
浏览
0

当我将grails(2.4.0)项目战部署到weblogic 12.1.2时,我遇到了一个问题 . 当部署到tomcat时,战争完全正常 . 问题是,当战争部署在weblogic中时 . 用户登录后,使用LDAP的身份验证过程也可正常运行 . 接下来应该使用GSP页面呈现主页,但似乎weblogic无法呈现GSP页面 . 它在浏览器上抛出404 .

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

我的Controller操作代码如下:

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问题并完成了那里提到的补救措施 . 但我认为,问题是请求被提交给正确的Controller但是当回到UI时,weblogic无法找到GSP(tomcat在哪里没有问题) .

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

:MyHomeController - **********到达MyHomeController ********** ::: [2c5cb87d-29ad-4006-8294-4a1f355e124e] [Lokajit_Tikayatray]:OptimizedAutowireCapableBeanFactory - 返回单例的缓存实例bean 'groovyPagesUriService' ::: [2c5cb87d-29ad-4006-8294-4a1f355e124e] [Lokajit_Tikayatray]:AbstractGrailsControllerHelper - 用result [null]执行的Action [testCall1]和视图名称[/ myHome / index] ::: [2c5cb87d-29ad-4006 -8294-4a1f355e124e] [Lokajit_Tikayatray]:AbstractGrailsControllerHelper - Action [testCall1]处理,创建Spring模型和视图[ModelAndView:引用视图名为'/myHome/myhome'; model is {}] ::: [2c5cb87d-29ad-4006-8294-4a1f355e124e] [Lokajit_Tikayatray]:SimpleGrailsController - [SimpleGrailsController]转发模型和视图[ModelAndView:引用视图,名称为'/myHome/myhome'; model [}] with class [/ myHome / myhome] ::: [2c5cb87d-29ad-4006-8294-4a1f355e124e] [Lokajit_Tikayatray]:CompositeInterceptor - postHandle SecurityContextHolderAwareRequestWrapper [org.springframework.security.web.context.HttpSessionSecurityContextRepository $ Servlet3SaveToSessionRequestWrapper @ 320c8103],org.springframework.security.web.context.HttpSessionSecurityContextRepository$SaveToSessionResponseWrapper@52ea05a0,org.codehaus.groovy.grails.web.servlet.mvc.SimpleGrailsController@4720353f,ModelAndView:对名称为'/myHome/myhome'的视图的引用; model is {} ::: [2c5cb87d-29ad-4006-8294-4a1f355e124e] [Lokajit_Tikayatray]:GrailsDispatcherServlet - 渲染视图[org.codehaus.groovy.grails.web.sitemesh.SitemeshLayoutView:unnamed; DispatcherServlet中的URL [null]],名称为'grails' ::: [2c5cb87d-29ad-4006-8294-4a1f355e124e] [Lokajit_Tikayatray]: JstlView - Forwarding to resource [/WEB-INF/grails-app/views/myHome/myhome.jsp] in InternalResourceView 'null' ::: [2c5cb87d-29ad-4006-8294-4a1f355e124e] [Lokajit_Tikayatray]: GrailsDispatcherServlet - 错误呈现视图[org.codehaus.groovy.grails.web.sitemesh.SitemeshLayoutView:unnamed;在DispatcherServlet中的URL [null]],名为'grails' java.lang.NullPointerException,位于weblogic.servial.StubSecurityHelper $ ServletServiceAction.run(StubSecurityHelper.java:280),网址为weblogic.servial.StubSecurityHelper $ ServletServiceAction.run(StubSecurityHelper.java) :254)at weblogic.servial.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:136)at weblogic.servlet.internal.ServletStubImpl.exe(ServletStubImpl.java:341)at weblogic.servlet.internal.TailFilter.doFilter(TailFilter . java:25)at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl .java:79)at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79),网址为weblogic.servlet.internal.Devoke.vt上 . 来自weblogic.servlet.internal.RequestDispatcherImpl.forward的weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:574) (RequestDispatcherImpl.java:272)atweblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)at grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter.doFilter(GrailsAnonymousAuthenticationFilter.java:53)at grails.plugin.springsecurity.web.authentication.RequestHolderAuthenticationFilter . doFilter(RequestHolderAuthenticationFilter.java:49)位于weblogic的weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)的grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter.doFilter(MutableLogoutFilter.java:82) .loglet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)at at weblogic.servlet.internal.WebAppServletContext $ ServletInvocationAction.wrapRun(WebAppServletContext.java:3367)at weblogic.servlet.internal.WebAppServletContext $ ServletInvocationAction.run(WebAppServletContext.java:3333) )at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle . java:57)at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2220)at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2146)at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext .loga:2124)at weblogic.servlet.invine.ServletRequestImpl.run(ServletRequestImpl.java:1564)at weblogic.servlet.provider.ContainerSupportProviderImpl $ WlsRequestExecutor.run(ContainerSupportProviderImpl.java:254)at weblogic.work.ExecuteThread.execute( ExecuteThread.java:295)at weblogic.work.ExecuteThread.run(ExecuteThread.java:254)

1 回答

  • 0

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

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

    因此,weblogic试图在“my H ome”文件夹中找到'myhome' GSP文件(大写为H),但我的所有视图文件夹名称都是小写的 . 因此,weblogic无法在URL中找到GSP . 即使我将类似的JSP复制到所需的路径仍然无法找到它 . 从日志中获取线索,我将视图文件夹名称更改为与URL完全相同的情况,并且工作正常 . :)

    Tomcat的情况也不是这样 . Tomcat不会将URL用作区分大小写 . 它可以在任何情况下找到URL路径 . 这就是为什么我的应用程序与tomcat一起工作正常,即使URL是/我 H ome / **但我的视图文件夹名称是'my h ome' . 由于tomcat能够正确识别URL路径,因此我并不认为weblogic将对URL路径进行区分大小写的搜索(直到我用尽所有可能的选项来解决问题:)) .

相关问题