実行に 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 を実装しています
他の誰かがこの問題を経験しましたか? これに対する回避策はありますか?