JavaWeb服务创建大量Tomcat会话
我在Linux上的Tomcat中运行Java Web服务。JWS将继续为每个调用创建新会话。我想在用户完成WebService调用后删除/终止会话。有人有这方面的经验吗?我无法减少超时时间,因为Web服务是更大应用程序的一部分。要么将WS移动到自己的Web应用程序(可能一开始就应该这样做),然后将其设置为单独的,安装HTTP筛选器拦截对WS的调用,并在WS发送响应后关闭会话,或者让WS本身关闭会话。因此,作为解决方法,我在JWS中创建了一个方法,并在从方法返回数据之前调用它。有点粗糙,但它有效JavaWeb服务创建大量Tomcat会话,java,web-services,session,tomcat,java-web-start,Java,Web Services,Session,Tomcat,Java Web Start,我在Linux上的Tomcat中运行Java Web服务。JWS将继续为每个调用创建新会话。我想在用户完成WebService调用后删除/终止会话。有人有这方面的经验吗?我无法减少超时时间,因为Web服务是更大应用程序的一部分。要么将WS移动到自己的Web应用程序(可能一开始就应该这样做),然后将其设置为单独的,安装HTTP筛选器拦截对WS的调用,并在WS发送响应后关闭会话,或者让WS本身关闭会话。因此,作为解决方法,我在JWS中创建了一个方法,并在从方法返回数据之前调用它。有点粗糙,但它有效
private void dropWSSession(){
MessageContext messageContext = MessageContext.getCurrentContext();
HttpServlet servlet = (HttpServlet)messageContext.getProperty(HTTPConstants.MC_HTTP_SERVLET);
ServletContext servletContext = (ServletContext)servlet.getServletContext();
HttpSession session =((HttpServletRequest)messageContext.getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST)).getSession();
session.invalidate();
}谢谢朱文婷。此时,将服务器移动到自己的web应用程序(同意……应该已经完成)不是一个选项。我不知道如何在JWS中关闭会话。。。有什么想法吗?@BillT如果您可以在WS-handler或servlet过滤器中访问HttpSession,您可以关闭它。请参阅API文档。