1

我正在开发一个大型复杂的 Tapestry 服务。它通常可以工作,但有时在运行一段时间时,它所在的会话会失效,并且会发送错误。该服务没有任何内容需要会话,但有时它依赖于依赖于“需要”会话的服务的服务。

我想在我的测试中务实地使会话无效,这样我就可以防止回归。理想情况下,我会在不终止生产代码中的会话的情况下执行此操作,这就是我现在测试它的方式。

具体来说,我们通过运行服务器和进行 http 调用以及扩展 TapestryIoCTestCase 来测试服务。我想不出任何干净的方法来使 http 客户端测试中的会话无效。并且为 TapestryIoCTestCase 创建的 Mock 会话不支持失效。

我已经研究过在测试中设置会话超时,但我希望有更直接的东西。

谢谢

e 例如,有人在某个时候想在我们的依赖项之一中设置语言环境

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)
4

1 回答 1

0

我假设您指的HttpSession是可以通过调用HttpSession.invalidate(). 尽管老实说,您的问题提供的信息太少,无法正确回答。你的设置是什么?你试过什么?你的代码是什么样的?你在嘲笑你的 Servlet 容器吗?ETC...

没有代码的问题很难回答。

于 2013-02-07T09:02:38.037 回答