Java tomcat webapp内部转发:会话未过期
我有一个Web服务,它可以非常简单地转发到位于同一Tomcat容器上的另一个Web应用Java tomcat webapp内部转发:会话未过期,java,tomcat,forward,Java,Tomcat,Forward,我有一个Web服务,它可以非常简单地转发到位于同一Tomcat容器上的另一个Web应用 private Response forward( @Context ServletContext context, @Context HttpServletRequest request, @Context HttpServletResponse response){ ServletContext ctx = context.getContext("/
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();
}
除了此webapp的会话未过期之外,这一切都可以正常工作。在tomcat管理器中,您可以看到,打开的会话积累得相当快,多达数百个
我不知道为什么在已经发送响应的情况下它们会持续。
你知道我的前进方法缺少什么吗
为什么它们在响应已发送时持续
为什么您认为在发送响应后会话将无效
只有在会话超时或您使用以下命令强制使会话无效时,它才会失效:
Session#invalidate() method
转发请求不会使会话无效…除非您选择1,否则会话不会过期。关闭浏览器2。手动终止会话3。如果设置了会话超时,请等待。
session.invalidate()
可用于使会话无效…session=request.getSession(true)
可以用来获取一个新的sessionOk,但是如果我只是用通常的返回响应来终止请求,那么会话怎么不会累积呢;?每次你转发到另一个应用程序时,都会创建一个新会话,它不会在应用程序之间共享会话…当你返回时,你仍然在同一个应用程序中,因此不会创建新会话…因为如果我仅使用通常的返回响应终止请求,webapp会话不会累积。ok().build();为什么它会累积?如果你只是返回,你仍然在同一个应用程序中,不会为它创建新会话!