Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaWeb服务创建大量Tomcat会话_Java_Web Services_Session_Tomcat_Java Web Start - Fatal编程技术网

JavaWeb服务创建大量Tomcat会话

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中创建了一个方法,并在从方法返回数据之前调用它。有点粗糙,但它有效

我在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文档。