【问题标题】:Java Web Service creates large number of Tomcat sessionsJava Web 服务创建大量 Tomcat 会话
【发布时间】:2013-03-26 12:40:24
【问题描述】:

我在 Linux 上的 Tomcat 中运行 Java Web 服务。 JWS 将继续为每个呼叫创建新会话。一旦用户完成 WebService 调用,我想删除/终止会话。有人对此有经验吗?我无法减少超时,因为 WebService 是更大应用程序的一部分。

【问题讨论】:

    标签: java web-services session tomcat java-web-start


    【解决方案1】:

    要么将 WS 移动到它自己的 Web 应用程序(可能一开始就应该这样做)并单独设置,安装一个 HTTP 过滤器拦截对 WS 的调用并在 WS 响应后关闭会话发送,或者让 WS 自己关闭会话。

    【讨论】:

    • 谢谢jwenting。将服务器移动到自己的网络应用程序(同意......应该已经完成​​)不是此时的选择。我不确定如何在 JWS 中关闭会话...有什么想法吗?
    • @BillT 如果您可以访问 WS 处理程序或 servlet 过滤器中的 HttpSession,则可以关闭它。请参阅 API 文档。
    【解决方案2】:

    因此,作为一种解决方法,我在 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();
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-26
      相关资源
      最近更新 更多