我正在开发一个大型复杂的Tapestry服务。它通常可以工作,但有时当它运行一段时间它将会失效,它将发送一个错误。这项服务不需要会话,但有时它取决于依赖于“需要”会话的服务的服务。
我想在我的测试中务实地使会话无效,所以我可以防止回归。理想情况下,我会在不破坏生产代码中的会话的情况下执行此操作,这就是我现在正在测试它的方式。
具体来说,我们通过运行服务器并进行http调用以及扩展TapestryIoCTestCase来测试服务。我无法想到从http客户端测试中使会话无效的任何干净方法。为TapestryIoCTestCase创建的Mock会话不支持失效。
我已经考虑过在测试中设置会话超时,但我希望能有更直接的东西。
由于
例如某个人在某个点想要在我们的一个依赖项中设置语言环境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)
答案 0 :(得分:0)
我假设您指的是HttpSession
,可以通过调用HttpSession.invalidate()
来使其无效。尽管如此,你的问题提供的信息太少,无法得到正确答案。你的设置是什么?你有什么尝试?你的代码是什么样的?你在嘲笑你的Servlet容器吗?等...
没有代码的问题很难回答。