2013-04-18 24 views
6

クライアントの状態保存メソッドを持つJSF 2.1.21アプリケーションがあります。私はPrimeFaces 3.5 + Tomcat 7.0.37も使用しています。javax.faces.component.AttachedObjectListHolder.restoreStateの断続的なjava.lang.IndexOutOfBoundsException

OmniFacesの完全なAjax例外ハンドラを使用して、カスタムエラーページを表示し、問題が発生したときにスタックトレースをメールします。

毎日、少なくとも1つの電子メールが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 Webアプリケーションを置き換えることはできないと思います。

これは、Webアプリケーションの古いバージョンがアクティブなセッションを持つまでサーバー上にとどまるTomcatの並列展開を使用して完全に解決できました。

+0

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

+0

に指定されたcorretの回答この場合は「正しい」答えはありませんが、状況... – FkJ

+0

Heheheウルはここで大丈夫、私は具体的にさせて "リンクは完璧に同じ例外のために働いたソリューションです"。 – Anupam

関連する問題