2012-02-20 2 views
0

DynamicMappingFilter를 사용하여 Stripes를 구성 했으므로 "* .action"없이 URL을 사용할 수 있습니다. Stripes가 내 오류 페이지를 처리하기를 원합니다. 안녕하세요DynamicMappingFilter 및 오류 페이지가있는 많은 중첩 요청에

public class ErrorAction extends BaseAction implements ActionBean { 

    @DefaultHandler 
    public Resolution action() { 
     return new ForwardResolution("/WEB-INF/pages/test.jsp"); 
    } 
} 

/WEB-INF/pages/test.jsp는 일반 HTML은 다음과 같습니다, 줄무늬 작업을 거의 비어 지금

<jsp:forward page="/support/Error" /> 

그것은이에 전달하는 : 나는 404 오류를 처리하기 위해 내가 web.xml에서 참조하는 간단한 error.jsp 페이지를 만든 세계 페이지 (Netbeans에서 생성).

하지만 어떤 이유로 작동하지 않습니다. /WEB-INF/pages/test.jsp으로 전달한 후 ErrorAction이 다시 요청되고 GlassFish가이를 중지 할 때까지이 루프가 계속됩니다.

이 기록됩니다 것입니다 (/fasdfasdfasdf 존재하지 않는 URL입니다) :

INFO: 14:37:13,646 TRACE StripesFilter:198 - Intercepting request to URL: /fasdfasdfasdf 
INFO: 14:37:13,648 DEBUG UrlBindingFactory:187 - No URL binding matches /fasdfasdfasdf 
INFO: 14:37:13,648 DEBUG UrlBindingFactory:187 - No URL binding matches /fasdfasdfasdf 

INFO: 14:37:13,650 TRACE StripesFilter:198 - Intercepting request to URL: /support/Error 
WARNING: PWC4011: Unable to set request character encoding to UTF-8 from context /mycompany-web-seller, because request parameters have already been read, or ServletRequest.getReader() has already been called 
INFO: 14:37:13,652 DEBUG UrlBindingFactory:187 - Matched /support/Error to /support/Error 
INFO: 14:37:13,653 DEBUG UrlBindingFactory:187 - Matched /support/Error to /support/Error 
INFO: 14:37:13,653 TRACE DispatcherServlet:198 - Dispatching request to URL: /support/Error 
INFO: 14:37:13,654 DEBUG ExecutionContext:187 - Transitioning to lifecycle stage RequestInit 
INFO: 14:37:13,654 DEBUG ExecutionContext:187 - Transitioning to lifecycle stage ActionBeanResolution 
INFO: 14:37:13,654 DEBUG UrlBindingFactory:187 - Matched /support/Error to /support/Error 
INFO: 14:37:13,655 DEBUG UrlBindingFactory:187 - Matched /support/Error to /support/Error 
INFO: 14:37:13,656 DEBUG ExecutionContext:187 - Transitioning to lifecycle stage HandlerResolution 
INFO: 14:37:13,656 DEBUG UrlBindingFactory:187 - Matched /support/Error to /support/Error 
INFO: 14:37:13,657 DEBUG DispatcherHelper:187 - Resolved event: action; will invoke: ErrorAction.action() 
INFO: 14:37:13,657 DEBUG ExecutionContext:187 - Transitioning to lifecycle stage BindingAndValidation 
INFO: 14:37:13,658 DEBUG DefaultActionBeanPropertyBinder:187 - Running required field validation on bean class com.mycompany.stripes.support.ErrorAction 
INFO: 14:37:13,658 DEBUG ExecutionContext:187 - Transitioning to lifecycle stage CustomValidation 
INFO: 14:37:13,659 DEBUG ExecutionContext:187 - Transitioning to lifecycle stage EventHandling 
INFO: 14:37:13,659 DEBUG ExecutionContext:187 - Transitioning to lifecycle stage ResolutionExecution 
INFO: 14:37:13,660 DEBUG HttpCacheInterceptor:187 - Looking for HttpCache on com.mycompany.stripes.support.ErrorAction.action() 
INFO: 14:37:13,660 DEBUG UrlBindingFactory:187 - No URL binding matches /WEB-INF/pages/test.jsp 
INFO: 14:37:13,661 DEBUG UrlBindingFactory:187 - No URL binding matches /WEB-INF/pages/test.jsp 
INFO: 14:37:13,662 TRACE ForwardResolution:198 - Forwarding to URL: /WEB-INF/pages/test.jsp 

INFO: 14:37:13,667 TRACE StripesFilter:198 - Intercepting request to URL: /support/Error 
INFO: 14:37:13,668 DEBUG UrlBindingFactory:187 - Matched /support/Error to /support/Error 
INFO: 14:37:13,669 DEBUG UrlBindingFactory:187 - Matched /support/Error to /support/Error 
INFO: 14:37:13,670 TRACE DispatcherServlet:198 - Dispatching request to URL: /support/Error 
INFO: 14:37:13,670 DEBUG ExecutionContext:187 - Transitioning to lifecycle stage RequestInit 
INFO: 14:37:13,671 DEBUG ExecutionContext:187 - Transitioning to lifecycle stage ActionBeanResolution 
INFO: 14:37:13,671 DEBUG UrlBindingFactory:187 - Matched /support/Error to /support/Error 
INFO: 14:37:13,672 DEBUG UrlBindingFactory:187 - Matched /support/Error to /support/Error 
INFO: 14:37:13,673 DEBUG ExecutionContext:187 - Transitioning to lifecycle stage HandlerResolution 
INFO: 14:37:13,673 DEBUG UrlBindingFactory:187 - Matched /support/Error to /support/Error 
INFO: 14:37:13,674 DEBUG DispatcherHelper:187 - Resolved event: action; will invoke: ErrorAction.action() 
INFO: 14:37:13,675 DEBUG ExecutionContext:187 - Transitioning to lifecycle stage BindingAndValidation 
INFO: 14:37:13,675 DEBUG DefaultActionBeanPropertyBinder:187 - Running required field validation on bean class com.mycompany.stripes.support.ErrorAction 
INFO: 14:37:13,676 DEBUG ExecutionContext:187 - Transitioning to lifecycle stage CustomValidation 
INFO: 14:37:13,676 DEBUG ExecutionContext:187 - Transitioning to lifecycle stage EventHandling 
INFO: 14:37:13,677 DEBUG ExecutionContext:187 - Transitioning to lifecycle stage ResolutionExecution 
INFO: 14:37:13,677 DEBUG HttpCacheInterceptor:187 - Looking for HttpCache on com.mycompany.stripes.support.ErrorAction.action() 
INFO: 14:37:13,678 DEBUG UrlBindingFactory:187 - No URL binding matches /WEB-INF/pages/test.jsp 
INFO: 14:37:13,679 DEBUG UrlBindingFactory:187 - No URL binding matches /WEB-INF/pages/test.jsp 
INFO: 14:37:13,679 TRACE ForwardResolution:198 - Forwarding to URL: /WEB-INF/pages/test.jsp 

... and again the same 

그리고 예외입니다 : 디버거에서 추적 할 때

다음
WARNING: ApplicationDispatcher[/mycompany-web-seller] PWC1231: Servlet.service() for servlet default threw exception 
javax.servlet.ServletException: PWC1232: Exceeded maximum depth for nested request dispatches: 20      
    at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:772)       
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:649)       
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:483)     
    at org.apache.catalina.core.ApplicationDispatcher.doDispatch(ApplicationDispatcher.java:454)      
    at org.apache.catalina.core.ApplicationDispatcher.dispatch(ApplicationDispatcher.java:350)       

    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:300)       
    at net.sourceforge.stripes.action.ForwardResolution.execute(ForwardResolution.java:110)        
    at net.sourceforge.stripes.controller.DispatcherHelper$7.intercept(DispatcherHelper.java:508)      
    at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:158)       
    at net.sourceforge.stripes.controller.HttpCacheInterceptor.intercept(HttpCacheInterceptor.java:99)     
    at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155)       
    at net.sourceforge.stripes.controller.BeforeAfterMethodInterceptor.intercept(BeforeAfterMethodInterceptor.java:113) 
    at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155)       
    at net.sourceforge.stripes.controller.ExecutionContext.wrap(ExecutionContext.java:74)        
    at net.sourceforge.stripes.controller.DispatcherHelper.executeResolution(DispatcherHelper.java:502)     
    at net.sourceforge.stripes.controller.DispatcherServlet.executeResolution(DispatcherServlet.java:286)    
    at net.sourceforge.stripes.controller.DispatcherServlet.service(DispatcherServlet.java:170)       
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)              
    at net.sourceforge.stripes.controller.DynamicMappingFilter$2.doFilter(DynamicMappingFilter.java:431)    
    at net.sourceforge.stripes.controller.StripesFilter.doFilter(StripesFilter.java:247)        
    at net.sourceforge.stripes.controller.DynamicMappingFilter.doFilter(DynamicMappingFilter.java:418)     
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)    
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)      
    at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:785)       
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:649)       
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:483)     
    at org.apache.catalina.core.ApplicationDispatcher.doDispatch(ApplicationDispatcher.java:454)      
    at org.apache.catalina.core.ApplicationDispatcher.dispatch(ApplicationDispatcher.java:350)       
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:300)       
    at org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:785)          
    at org.apache.jsp.error_jsp._jspService(error_jsp.java:48)               
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)            
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)              
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:403)         
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:492)           
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378)            
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)              
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)          
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)    
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)      
    at net.sourceforge.stripes.controller.DynamicMappingFilter.doFilter(DynamicMappingFilter.java:397)     
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)    
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)      
    at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:785)       
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:649)       
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:485)     
    at org.apache.catalina.core.ApplicationDispatcher.doDispatch(ApplicationDispatcher.java:454)      
    at org.apache.catalina.core.ApplicationDispatcher.dispatch(ApplicationDispatcher.java:350)       
    at org.apache.catalina.core.ApplicationDispatcherForward.custom(ApplicationDispatcherForward.java:253)    
    at org.apache.catalina.core.ApplicationDispatcherForward.status(ApplicationDispatcherForward.java:209)    
    at org.apache.catalina.core.ApplicationDispatcherForward.commit(ApplicationDispatcherForward.java:131)    
    at org.apache.catalina.core.ApplicationDispatcher.dispatch(ApplicationDispatcher.java:353)       

    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:300)       
    at net.sourceforge.stripes.action.ForwardResolution.execute(ForwardResolution.java:110)        
    at net.sourceforge.stripes.controller.DispatcherHelper$7.intercept(DispatcherHelper.java:508)      
    at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:158)       
    at net.sourceforge.stripes.controller.HttpCacheInterceptor.intercept(HttpCacheInterceptor.java:99)     
    at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155)       
    at net.sourceforge.stripes.controller.BeforeAfterMethodInterceptor.intercept(BeforeAfterMethodInterceptor.java:113) 
    at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:155)       
    at net.sourceforge.stripes.controller.ExecutionContext.wrap(ExecutionContext.java:74)        
    at net.sourceforge.stripes.controller.DispatcherHelper.executeResolution(DispatcherHelper.java:502)     
    at net.sourceforge.stripes.controller.DispatcherServlet.executeResolution(DispatcherServlet.java:286)    
    at net.sourceforge.stripes.controller.DispatcherServlet.service(DispatcherServlet.java:170)       
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)              
    at net.sourceforge.stripes.controller.DynamicMappingFilter$2.doFilter(DynamicMappingFilter.java:431)    
    at net.sourceforge.stripes.controller.StripesFilter.doFilter(StripesFilter.java:247)        
    at net.sourceforge.stripes.controller.DynamicMappingFilter.doFilter(DynamicMappingFilter.java:418)     
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)    
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)      
    at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:785)       
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:649)       
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:483)     
    at org.apache.catalina.core.ApplicationDispatcher.doDispatch(ApplicationDispatcher.java:454)      
    at org.apache.catalina.core.ApplicationDispatcher.dispatch(ApplicationDispatcher.java:350)       
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:300)       
    at org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:785)          
    at org.apache.jsp.error_jsp._jspService(error_jsp.java:48)               
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)            
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)              
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:403)         
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:492)           
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378)            
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)              
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)          
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)    
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)      
    at net.sourceforge.stripes.controller.DynamicMappingFilter.doFilter(DynamicMappingFilter.java:397)     
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)    
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)      
    at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:785)       
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:649)       
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:485)     
    at org.apache.catalina.core.ApplicationDispatcher.doDispatch(ApplicationDispatcher.java:454)      
    at org.apache.catalina.core.ApplicationDispatcher.dispatch(ApplicationDispatcher.java:350)       
    at org.apache.catalina.core.ApplicationDispatcherForward.custom(ApplicationDispatcherForward.java:253)    
    at org.apache.catalina.core.ApplicationDispatcherForward.status(ApplicationDispatcherForward.java:209)    
    at org.apache.catalina.core.ApplicationDispatcherForward.commit(ApplicationDispatcherForward.java:131)    
    at org.apache.catalina.core.ApplicationDispatcher.dispatch(ApplicationDispatcher.java:353)   
    ... and again the same 

는 요청이 실행됩니다 어떻게 (부품 만 중요하다 :

-> /badurl 
    -> DynamicMappingFilter 
     -> chain.doFilter 
     <- 404 
     * no Stripes ActionBean found for /badurl 
    <- 
-> error.jsp 
    -> DynamicMappingFilter 
     -> chain.doFilter 
     -> error.jsp 
      -> /support/Error 
       -> DynamicMappingFilter 
        -> chain.doFilter 
        <- 404 
        * ErrorAction found 
        -> stripesDispatcher.service 
        -> ForwardResolution.execute (/WEB-INF/pages/test.jsp) 
         -> DynamicMappingFilter 
          -> chain.doFilter 
           -> /WEB-INF/pages/test.jsp 
           <- 
          <- OK 
         <- 
         ? it does not return to ForwardResolution.execute 
         -> DynamicMappingFilter 
          -> chain.doFilter 
           -> error.jsp 
           and the loop starts again 

누구입니까? test.jsp으로 전달한 후 /error.jsp 요청이 있는지 확인하십시오. /error.jsp을 요청하면 /support/Error이 예상대로 작동합니다. /WEB-INF/pages/test.jsp이 렌더링되고 요청이 완료됩니다.

편집 : error.jsp/WEB-INF/pages/test으로 직접 전달되는 경우 루프가 발생하지 않습니다. 그것이 일어날 때 줄무늬 동작을 통과 할 때입니다.

답변

0

"/WEB-INF/pages/test.jsp"라는 URL이 해당 URL에 존재하지 않는다고 생각합니다. 이로 인해 모든 것을 다시 시작하는 404 오류가 발생하여 무한 루프가 발생합니다.

"/WEB-INF/pages/test.jsp"페이지에 직접 액세스 할 수 있습니까?

+0

네, 필자가 말한 것처럼 -/error.jsp를 요청하면/support/Error가 예상대로 작동합니다. -/WEB-INF/pages/test.jsp가 렌더링되고 요청이 완료됩니다. '/ WEB-INF/pages/test.jsp'는 직접 요청할 수 없습니다. – piotrek

관련 문제