2013-04-18 3 views
6

클라이언트 상태 저장 메소드가있는 JSF 2.1.21 응용 프로그램이 있습니다. 또한 PrimeFaces 3.5 + Tomcat 7.0.37을 사용하고 있습니다.javax.faces.component.AttachedObjectListHolder.restoreState에서 간헐적 인 java.lang.IndexOutOfBoundsException

OmniFaces 전체 Ajax 예외 처리기를 사용하여 사용자 정의 오류 페이지를 표시하고 문제가 발생하면 stacktrace로 전자 메일을 보냅니다.

매일 적어도 하나의 이메일을 java.lang.IndexOutOfBoundsException과 함께 수신합니다. 그것은 응용 프로그램의 재배포와 관련이있는 것 같지만 재현 할 수는 없습니다.

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 
at java.util.ArrayList.rangeCheck(ArrayList.java:604) 
at java.util.ArrayList.get(ArrayList.java:382) 
at javax.faces.component.AttachedObjectListHolder.restoreState(AttachedObjectListHolder.java:165) 
at javax.faces.component.UIComponentBase.restoreState(UIComponentBase.java:1566) 
at com.sun.faces.application.view.FaceletPartialStateManagementStrategy$2.visit(FaceletPartialStateManagementStrategy.java:380) 
at com.sun.faces.component.visit.FullVisitContext.invokeVisitCallback(FullVisitContext.java:151) 
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1612) 
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623) 
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623) 
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623) 
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623) 
at javax.faces.component.UIForm.visitTree(UIForm.java:371) 
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623) 
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623) 
at com.sun.faces.application.view.FaceletPartialStateManagementStrategy.restoreView(FaceletPartialStateManagementStrategy.java:367) 
at com.sun.faces.application.StateManagerImpl.restoreView(StateManagerImpl.java:138) 
at com.sun.faces.application.view.ViewHandlingStrategy.restoreView(ViewHandlingStrategy.java:123) 
at com.sun.faces.application.view.FaceletViewHandlingStrategy.restoreView(FaceletViewHandlingStrategy.java:569) 
at com.sun.faces.application.view.MultiViewHandler.restoreView(MultiViewHandler.java:141) 
at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:301) 
at org.omnifaces.viewhandler.RestorableViewHandler.restoreView(RestorableViewHandler.java:59) 
at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:192) 
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:116) 
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) 
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at br.com.spdata.tecnico.filter.MobileFilter.doFilter(MobileFilter.java:53) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61) 
at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) 
at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) 
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) 
at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) 
at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) 
at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) 
at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) 
at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) 
at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) 
at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) 
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
at com.googlecode.psiprobe.Tomcat70AgentValve.invoke(Tomcat70AgentValve.java:38) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
at java.lang.Thread.run(Thread.java:722) 

어떤 아이디어 : 여기

는 스택 트레이스입니까?

덕분에, 필립

+0

코드를 공유하십시오. 코드가 무엇인지 누구든지 어떻게 알 수 있습니까? –

+0

이 모든 스택 추적입니까? 아니'에 의한? – kolossus

+0

관련/중복 : http://stackoverflow.com/questions/12094077/jsf-session-failover-and-partial-state-saving 재배포 후 더티 세션과 관련됩니다. 하단의 OP 자신의 답변은이 문제를 해결해야하는 컨텍스트 매개 변수를 지정합니다. 시도 해봐. 특정 문제를 해결할 수도 있고 그렇지 않을 수도 있습니다. – BalusC

답변

2

StackOverflow의 결국이 문제의 존재를 생각 나게한다, 그래서 그것을 해결 어떻게 답변을 몇 분 정도 걸릴 수 있습니다.

사용자가 액세스 한 페이지 구조가 어떻게 든 변경된 경우 뷰 상태 관련 예외없이 실행중인 JSF 웹 애플리케이션을 대체 할 수 없다고 생각합니다.

이전 버전의 웹 응용 프로그램이 활성 세션을 가질 때까지 서버에 남아있는 Tomcat의 병렬 배포를 사용하여이 문제를 완벽하게 해결할 수있었습니다.

+0

http://stackoverflow.com/questions/12094077/jsf-session-fail-over-and-partial-state-saving – Anupam

+0

에 지정된 corret 응답이 경우 "올바른"대답은 없지만 처리 방법이 다릅니다. 상황 ... – FkJ

+0

Hehehe 여기에 vaild 괜찮아 내가 구체적으로하자 "링크가 완벽하게 동일한 예외를 위해 일한 솔루션"입니다. – Anupam

관련 문제