2015-01-12 2 views
0

gravel (2.4.0) 프로젝트 전쟁을 weblogic 12.1.2에 배포 할 때 문제가 있습니다. 전쟁은 바람둥이에 배치 될 때 완벽하게 작동합니다. 문제는 전쟁이 웹 로직에 배치 될 때입니다. 사용자가 로그인하면 LDAP를 사용하는 인증 프로세스도 정상적으로 작동합니다. 다음으로 홈 페이지는 GSP 페이지로 렌더링되어야하지만 weblogic이 GSP 페이지를 렌더링 할 수없는 것 같습니다. 브라우저에 404를 던지고 있습니다.weblogic에 배치 할 때 Grails에서 GSP를 렌더링 할 수 없습니다.

일단 응용 프로그램에 로그인하면 브라우저에서 URL을 직접 사용하면 흐름이 컨트롤러로 이동하고 컨트롤러에서 필요한 코드가 모두 실행되지만 GSP를보고 렌더링하는 데 실패합니다 "render"블록에 언급 된 페이지.

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

    render (view: 'myhome') 
} 

내가 같은 컨트롤러 액션을 사용하여 브라우저에 일반 텍스트를 렌더링하기 위해 노력하고 그것을 잘 작동합니다 :

내 컨트롤러 액션 코드는 다음과 같습니다. 웹 로직 배포에서도 문제없이 브라우저에서 렌더링 된 메시지를 볼 수 있습니다.

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

내가 Grails의 사이트에 웹 로직 문제를 확인했습니다 ([여기] [1])와가 언급 한 구제를 했어요. 하지만 문제는 요청이 올바른 컨트롤러에 제출되고 있지만 UI로 돌아올 때 weblogic에서 GSP를 찾을 수 없다는 것입니다 (여기서 Tomcat에는 문제가 없습니다).

weblogic에 배포 할 때 GSP를 렌더링하는 방법을 도와주십시오. 다음은 weblogic이 브라우저에서 404를 throw하는 로그의 예외입니다. * .jsp 파일을 찾으려하는 이유가 확실하지 않습니다.

: MyHomeController - ********** 도달 MyHomeController ********** ::: [2c5cb87d-29ad-4006-8294-4a1f355e124e] Lokajit_Tikayatray] OptimizedAutowireCapableBeanFactory - 싱글 톤 Bean의 캐시 된 인스턴스 반환 'groovyPagesUriService' :: [2c5cb87d-29ad-4006-8294-4a1f355e124e] [Lokajit_Tikayatray] : AbstractGrailsControllerHelper - 결과 [null] 및 뷰 이름 [/ myHome/index]로 실행 된 [testCall1] 액션 :: [2c5cb87d-29ad-4006-8294-4a1f355e124e] [Lokajit_Tikayatray] : AbstractGrailsControllerHelper - 액션 [testCall1]이 처리되고 Spring 모델이 생성되고 [ModelAndView : 이름이 '/ myHome/myhome] 인 뷰가 참조됩니다. 모델은 {}입니다. ::: [2c5cb87d-29ad-4006-8294-4a1f355e124e] [SimpleGrailsController] 전달 모델 및 뷰 [ModelAndView : 이름이 '/ myHome/myhome'인 뷰에 대한 참조; postHandle SecurityContextHolderAwareRequestWrapper [org.springframework.security.web.context.HttpSessionSecurityContextRepository $ Servlet3SaveToSessionRequestWrapper - CompositeInterceptor : 모델은 {}] 클래스 [/ 인 MyHome/인 MyHome] ::: [2c5cb87d-29ad-4006-8294-4a1f355e124e] [Lokajit_Tikayatray]입니다 @ 320c8103], org.springframework.security.web.context.Ht[email protected]52ea05a0, or[email protected]4720353f, ModelAndView : 이름이 '/ myHome/myhome 인 뷰에 대한 참조 '; 모델은 {} ::: [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 - 자원 [/ WEB-INF/grails-app/views/myHome] /myhome.jsp] InternalResourceView 'null'의 ::: [2c5cb87d-29ad-4006-8294-4a1f355e124e] [Lokajit_Tikayatray] : GrailsDispatcherServlet - 오류 렌더링보기 [org.codehaus.groovy.grails.web.sitemesh.SitemeshLayoutView : 이름이 없음; [grails] 이름이 Dis35cherServlet 인 URL [null] java.lang.weblogic.servlet.internal.StubSecurityHelper $ ServletServiceAction.run에서 weblogic.servlet.internal.StubSecurityHelper $ ServletServiceAction.run (StubSecurityHelper.java:280) (StubSecurityHelper.java:254) 에서 NullPointerException이 에서 weblogic.servlet.internal.StubSecurityHelper weblogic.servlet.internal.TailFilter.doFilter (TailFilter.java:25) 에서 weblogic.servlet.internal.ServletStubImpl.execute (ServletStubImpl.java:341) 에서 .invokeServlet (StubSecurityHelper.java:136) 에서 weblogic.servlet weblogic.servlet.internal.FilterChainImpl.doFilter (FilterChainImpl.java:79)에서 weblogic.servlet.internal.FilterChainImpl.doFilter (FilterChainImpl.java:79) 에서 .internal.FilterChainImpl.doFilter (FilterChainImpl.java:79) ...에서 weblogic.servlet.internal.RequestDispatcherImpl.forward (RequestDispatcherImpl.java에서 weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet (RequestDispatcherImpl.java:574) 에서 weblogic.servlet.internal.FilterChainImpl.doFilter (FilterChainImpl.java:79) : grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter.doFilter에서 weblogic.servlet.internal.FilterChainImpl.doFilter (FilterChainImpl.java:79) (GrailsAnonymousAuthenticationFilter.java:53) grails.plugin.springsecurity에서 272) . web.authentication.RequestHolderAuthenticationFilter.doFilter (RequestHolderAuthenticationFilter.java:49) (grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter.doFilter (MutableLogoutFilter.java:82) , weblogic.servlet.internal.FilterChai nImpl.doFilter (FilterChainImpl.java:79) weblogic.servlet.internal.FilterChainImpl.doFilter (FilterChainImpl.java:79)에서 weblogic.servlet.internal.FilterChainImpl.doFilter (FilterChainImpl.java:79)에서 로직에 . servlet.internal.FilterChainImpl.doFilter (FilterChainImpl.java:79) weblogic.servlet.internal.WebAppServletContext $ ServletInvocationAction.run에서 weblogic.servlet.internal.WebAppServletContext $ ServletInvocationAction.wrapRun (WebAppServletContext.java:3367) 에서 (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. 자바 : weblogic.servlet.internal.WebAppServletContext.doSecuredExecute (WebAppServletContext.java:2220 57) ) weblogic.servlet.internal.WebAppServletContext.securedExecute에서 (WebAppServletContext.java:2146) weblogic.servlet.internal.WebAppServletContext에서 . weblogic.servlet.internal.ServletRequestImpl.run (ServletRequestImpl.java:1564) weblogic.servlet.provider.ContainerSupportProviderImpl $ WlsRequestExecutor.run (ContainerSupportProviderImpl.java:254) 웹 로직에서 에서 에서 (WebAppServletContext.java:2124) 을 실행합니다. work.ExecuteThread.execute (ExecuteThread.java:295) at weblogic.work.ExecuteThread.run (ExecuteThread.java:254)

+0

Grails는 GSP와 JSP를 모두 지원하므로 지정된 .gsp가 없으면 grails는 같은 폴더에 같은 이름의 jsp 파일을 찾으려고 시도합니다. 이것이 위의 오류가 JSP를 찾지 못하는 오류를주는 이유입니다. 주어진 폴더에 같은 이름의 jsp를 추가했는데 액세스 할 수 있는지 알아보기 위해 동일한 오류가 발생했습니다. 즉 weblogic에서 지정된 위치의 파일을 찾을 수 없습니다. 아주 까다로운 일이 일어나고 있습니다 : - // –

답변

0

마지막으로 배포 작업이 완료되었습니다. i 웹 로직은 한 페이지에서 다른 페이지로 바르게 이동합니다. 문제는 뷰 폴더의 명명 규칙에있었습니다. weblogic은 framework에 의해 생성 된 URL과 정확히 같은 (대소 문자 구분) view 폴더 이름을 필요로합니다.

로그 인쇄 :
전달이 자원에 [/ WEB-INF/Grails의-응용 프로그램/뷰/인 MyHome /myhome.jsp]

그래서

는, 웹 로직이 '인 MyHome'GSP 내부 파일을 찾기 위해 노력했다 "내 H ome"폴더 (대문자 H 포함)이지만 내 모든보기 폴더 이름은 소문자였습니다. 따라서 weblogic은 URL에서 GSP를 찾을 수 없었습니다.유사한 JSP를 필요한 경로에 복사해도 여전히 찾지 못했습니다. 로그에서 단서를 얻음에 따라 필자는보기 폴더 이름을 URL과 동일한 경우로 변경하여 정상적으로 작동했습니다. :)

톰캣과 같은 경우는 아닙니다. Tomcat은 대소 문자를 구분하여 URL을 사용하지 않습니다. 어쨌든 URL 경로를 찾을 수 있습니다. URL이/H ome/**이지만 내보기 폴더 이름이 '내 h ome'인 경우에도 내 응용 프로그램이 Tomcat에서 잘 작동하는 것입니다. tomcat이 URL 경로를 제대로 식별 할 수 있었기 때문에 weblogic에서 URL 경로의 대소 문자를 구분하여 검색 할 것입니다 (문제를 해결할 수있는 모든 옵션이 다 떨어질 때까지 :).).

관련 문제