ようやく、struts2 アプリケーションのファイル アップロード アクションで execandwait インターセプターを機能させることができました。ユーザーがファイルを選択して [送信] をクリックすると、待機ページが表示され、アップロード結果に基づいて成功ページまたはエラー ページが表示されます。これがすべて機能したとき、非常に達成されたと感じました.....私たちの開発環境(Tomcatサーバー)で。
ただし、Weblogic 10.3 で同じコードを動作させようとすると問題が発生します。Weblogic の場合: ファイルを選択して [送信] をクリックすると、待機ページが表示され、最初の更新後に nullPointerException が発生します (詳細は以下を参照)。
class java.lang.NullPointerException
Error Message:
Stack Trace:
com.actions.myAction.upload(myAction.java:80)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:453)
com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:292)
org.apache.struts2.interceptor.BackgroundProcess$1.run(BackgroundProcess.java:57)
java.lang.Thread.run(Thread.java:619)
デバッグ中に、待機ページが更新されるたびに、コントロールが実際に myAction クラスに入ることがわかりますが、これは execAndWait インターセプターが機能するはずの方法ではありません (??)
誰でもこれで私を助けてもらえますか? execAndWaitInterceptor が Tomcat と Weblogic で動作する方法の違いは何ですか?
注: execAndWait インターセプタがなければ、ファイル アップロード ユーティリティは Weblogic でも正常に動作します。
struts.xml
<action name=myAction" class="myActionClass" method="myMethod">
<interceptor-ref name="completeStack" />
<interceptor-ref name="execAndWait">
<param name="delay">1000</param>
<param name="delaySleepInterval">500</param>
</interceptor-ref>
<result name="wait">/WEB-INF/pages/wait.jsp</result>
<result name="success">/WEB-INF/pages/success.jsp</result>
<result name="input">/WEB-INF/pages/inputPage.jsp</result>
</action>
待機.jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<meta http-equiv="refresh" content="5;url=<s:url includeParams="all" />"/>
</head>
<body>
<h1>Struts 2 execAndWait example</h1>
<h3>Please wait ...</h3>
</body>
</html>
ティア