【发布时间】:2013-03-26 12:40:24
【问题描述】:
我在 Linux 上的 Tomcat 中运行 Java Web 服务。 JWS 将继续为每个呼叫创建新会话。一旦用户完成 WebService 调用,我想删除/终止会话。有人对此有经验吗?我无法减少超时,因为 WebService 是更大应用程序的一部分。
【问题讨论】:
标签: java web-services session tomcat java-web-start
我在 Linux 上的 Tomcat 中运行 Java Web 服务。 JWS 将继续为每个呼叫创建新会话。一旦用户完成 WebService 调用,我想删除/终止会话。有人对此有经验吗?我无法减少超时,因为 WebService 是更大应用程序的一部分。
【问题讨论】:
标签: java web-services session tomcat java-web-start
要么将 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();
}
【讨论】: