我有一个网络服务可以非常简单地转发到位于同一个 Tomcat 容器上的另一个网络应用程序。
private Response forward(
@Context ServletContext context,
@Context HttpServletRequest request,
@Context HttpServletResponse response){
ServletContext ctx = context.getContext("/myothewebapp");
RequestDispatcher dispatcher=ctx.getRequestDispatcher("/test");
dispatcher.forward(request, response);
return Response.ok("").build();
}
除此 web 应用程序的 session 未过期外,这按预期工作。在 tomcat 管理器中可以看到,打开的 session 累积得非常快,最多可达数百个。
我不确定为什么在响应已发送后它们会持续。 知道我的前向方法中缺少什么吗?
最佳答案
Why they last when the response is already sent.
为什么您认为发送响应后 session 将失效。
只有在发生 session 超时或您使用以下方式强制使 session 无效时,它才会失效:
Session#invalidate() method
关于java - 在 tomcat webapp 内部转发 : sessions are not expired,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30645626/