2

実行に 1 秒から 5 分かかるアクションを持つ Struts2 アプリケーションがあります。そのため、アクションの実行に 20 秒以上かかる場合は、execAndWait インターセプターを使用して待機ページを表示しています。アクションのセットアップは次のようになります。

<action name="myAction" class="myActionClass">
    <interceptor-ref name="defaultStack" />
    <interceptor-ref name="execAndWait">
       <param name="delay">20000</param>
    </interceptor-ref>
    <result name="success">myPage.jsp</result>

    <result name="wait">waitPage.jsp</result>
</action>

アクションの実行に 1 秒しかかからないシナリオでこれをテストしました。待機ページが表示されないことを期待していました。

ただし、待機ページは引き続き表示されました。アクション クラスとメソッドのデバッグを試みたところ、実行が以下のステートメントで指定された時間ハングすることがわかりました。

<param name="delay">

この場合、以下のステートメントで 20 秒間待機してから、正常に実行を完了します。

getSession().put(A_SESSION_VARIABLE, 10);

注: MyActionClass は SessionAware を実装しています

他の誰かがこの問題を経験しましたか? これに対する回避策はありますか?

4

2 に答える 2

2

回避策 (アクションがサーブレット環境で使用されている場合):ServletRequestAwareインターフェイスを実装HttpServletRequestし、セッションを取得するために使用します。

request.getSession().setAttribute(A_SESSION_VARIABLE, 10);
于 2013-06-21T12:03:07.527 に答える