私は契約者が開発したJavaアプリケーションをサポートしています。私の経験は主に.NETであり、アプリケーションコードの知識を持つ人にはアクセスできません。このアプリケーションは、Eclipse内のTomcatサーバー上で実行している場合、開発環境で正常に動作します。しかし、WARをリモートサーバ(まだ開発環境にある)に配備した後、コンカレント変更例外が発生します。私はジャンプして、すべてのアプリケーションコードを行単位でレビューする前に、何が起こる可能性があるのかを見たいと思います。Java ConcurrentModificationExceptionはデプロイされた環境にのみあります
私が理解していることは、通常、イテレータオブジェクトを反復処理中に変更することによって発生します。しかし、なぜEclipseで実行しているときに例外が発生しませんでしたか?これがコード内のバグを確認するためのものであれば、Eclipseが例外をトリガーしていない場合、コード内のどこにあるのかを見つけるにはどうすればよいですか?例外トレースは私にはあいまいです(下に貼り付けます)。表示される唯一のファイル参照は、ビューテンプレートとです。デプロイされたアプリケーションに依存してデバッグする必要がある場合、このバグがどこにあるのかをどのようにして知ることができますか?これは環境問題である可能性がありますか?そうであれば、それを引き起こす可能性がありますか?
Sep 6, 2016 3:50:57 PM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
SEVERE: Error Rendering View[/views/editor.xhtml]
java.util.ConcurrentModificationException
at java.util.LinkedHashMap$LinkedHashIterator.nextEntry(Unknown Source)
at java.util.LinkedHashMap$EntryIterator.next(Unknown Source)
at java.util.LinkedHashMap$EntryIterator.next(Unknown Source)
at java.util.AbstractMap.equals(Unknown Source)
at java.util.Collections$SynchronizedMap.equals(Unknown Source)
at com.sun.faces.context.SessionMap.put(SessionMap.java:138)
at com.sun.faces.context.SessionMap.put(SessionMap.java:61)
at com.sun.faces.renderkit.ServerSideStateHelper.writeState(ServerSideStateHelper.java:243)
at com.sun.faces.renderkit.ResponseStateManagerImpl.writeState(ResponseStateManagerImpl.java:122)
at com.sun.faces.application.StateManagerImpl.writeState(StateManagerImpl.java:113)
at com.sun.faces.application.view.WriteBehindStateWriter.flushToWriter(WriteBehindStateWriter.java:225)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:464)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125)
at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:286)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
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:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
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:1001)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1770)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
java.util.ConcurrentModificationException
at java.util.LinkedHashMap$LinkedHashIterator.nextEntry(Unknown Source)
at java.util.LinkedHashMap$EntryIterator.next(Unknown Source)
at java.util.LinkedHashMap$EntryIterator.next(Unknown Source)
at java.util.AbstractMap.equals(Unknown Source)
at java.util.Collections$SynchronizedMap.equals(Unknown Source)
at com.sun.faces.context.SessionMap.put(SessionMap.java:138)
at com.sun.faces.context.SessionMap.put(SessionMap.java:61)
at com.sun.faces.renderkit.ServerSideStateHelper.writeState(ServerSideStateHelper.java:243)
at com.sun.faces.renderkit.ResponseStateManagerImpl.writeState(ResponseStateManagerImpl.java:122)
at com.sun.faces.application.StateManagerImpl.writeState(StateManagerImpl.java:113)
at com.sun.faces.application.view.WriteBehindStateWriter.flushToWriter(WriteBehindStateWriter.java:225)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:464)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125)
at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:286)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
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:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
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:1001)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1770)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
これはあなたが所有するコードで発生しますか?つまり、内部ソースまたは外部ライブラリからのこのスタックトレースの原因は何ですか? – Makoto
イテレータの外側で* iterated *オブジェクトを修正し、 'iterator'自体を変更しない場合、例外がスローされます。 1つの可能性は、別のスレッドからの変更です。反復ループにマップを変更するものがあります。複数の同時セッションがないため、ローカルビルドで例外が発生しない可能性があります。しかし、あなたがすべき最初のことはどこに*問題があるかを知ることです。スタックトレースにカスタムパッケージが見つかりません。 – Ordous
@Makoto正直なところ、私はどのように伝えるべきかわかりません... – matikin9