大規模で複雑なタペストリー サービスに取り組んでいます。通常は機能しますが、しばらく実行すると、セッションが無効になり、エラーが送信されることがあります。このサービスについてセッションを必要とするものは何もありませんが、セッションを「必要とする」サービスに依存するサービスに依存する場合があります。
テストでセッションを実用的に無効にしたいので、回帰を防ぐことができます。理想的には、本番コードでセッションを強制終了せずにこれを実行します。これは、現在テストしている方法です。
具体的には、サーバーを実行して http 呼び出しを行い、TapestryIoCTestCase を拡張してサービスをテストしています。http クライアント テストからセッションを無効にするクリーンな方法は思いつきません。また、TapestryIoCTestCase 用に作成されたモック セッションは無効化をサポートしていません。
テストでセッションタイムアウトを設定することを検討しましたが、もっと直接的なものを望んでいました.
ありがとう
たとえば、ある時点で誰かが依存関係の1つにロケールを設定したいと考えていました
java.lang.IllegalStateException: setAttribute: Session [31943F300613D2105C9AF8602397557D] has already been invalidated
at org.apache.catalina.session.StandardSession.setAttribute(StandardSession.java:1437)
at org.apache.catalina.session.StandardSession.setAttribute(StandardSession.java:1402)
at org.apache.catalina.session.StandardSessionFacade.setAttribute(StandardSessionFacade.java:156)
at org.apache.tapestry5.internal.services.SessionImpl.setAttribute(SessionImpl.java:67)
at org.apache.tapestry5.internal.services.SessionApplicationStatePersistenceStrategy.set(SessionApplicationStatePersistenceStrategy.java:68)
at $ApplicationStatePersistenceStrategy_13c1cafe292.set($ApplicationStatePersistenceStrategy_13c1cafe292.java)
at org.apache.tapestry5.internal.services.ApplicationStateManagerImpl$ApplicationStateAdapter.set(ApplicationStateManagerImpl.java:50)
at org.apache.tapestry5.internal.services.ApplicationStateManagerImpl.set(ApplicationStateManagerImpl.java:138)
at $ApplicationStateManager_13c1cafe272.set($ApplicationStateManager_13c1cafe272.java)