1

ようやく、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>

ティア

4

0 に答える 0