2011-10-10 17 views
2

時々、この例外は私のStruts 2アプリケーションでスローされます。 必要に応じて複製できません。ランダムにポップアウトします。Struts 2 - 既に実行されたアクション例外

Struts has detected an unhandled exception: 
Messages: 
Action has already executed 
File: com/opensymphony/xwork2/DefaultActionInvocation.java 
Line number: 240 

Stacktraces 
java.lang.IllegalStateException: Action has already executed 

com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:240) 
xxx.yyy.zzz.qqq.ddd.interceptors.AuthInterceptor.invoke(AuthInterceptor.java:68) 
xxx.yyy.zzz.qqq.ddd.interceptors.AuthCCareInterceptor.checkAuthenticateInvoke(AuthCCareInterceptor.java:142) 
xxx.yyy.zzz.qqq.ddd.interceptors.AuthInterceptor.intercept(AuthInterceptor.java:59) 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:248) 
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52) 
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:498) 
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) 
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:185) 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151) 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929) 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405) 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:269) 
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515) 
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302) 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
java.lang.Thread.run(Thread.java:722) 

"xxx.yyy.zzz.qqq.ddd"は申し訳ありませんが機密情報です。あなたが理解していると確信しています!これら三つのインターセプタの

答えて

5

問題は、呼び出されたアクションインスタンスなど、インターセプタに変数を保存していたことです。リファクタリング後、すべて正常に動作し始めました!

インターセプタは、スレッドセーフ(サーブレットのような)である必要があります。

+0

良い仕事:)そのようなものを追跡することは、イライラする可能性があります。 –

+0

@miguel Ribeiroあなたはリファクタリングを意味していますか?私は同じ問題を抱えていますか? – Babel

+0

@miguel Ribeiro私はこのメソッド 'invokeActionOnly()'をうまく使いました。 – Babel

3

一つ:-)

おかげでおそらく壊れている:

interceptors.AuthInterceptor.invoke(AuthInterceptor.java:68) 
interceptors.AuthCCareInterceptor.checkAuthenticateInvoke(AuthCCareInterceptor.java:142) 
interceptors.AuthInterceptor.intercept(AuthInterceptor.java:59) 

は明らかにずっと提供された情報とそれを超えてあなたを伝えることはできません。

+0

さて、私はこれが起こる理由があると思った。それが壊れたインターセプタだった場合、まったく同じアクションを実行しているエラーを再現できないはずですか? –

+1

どのように壊れているかによって異なります。多くの動く部品がありますが、私はS2を使って作業していたので、これを見たことはありませんでした。確かにフレームワーク上の何かになる可能性がありますが、見つけ出す方法を知っている。 –

+0

問題の特定に役立つと思われる情報にはどのようなものがありますか? :-P –

関連する問題