2013-03-26 61 views
0

我的Java Web服務在Linux上的Tomcat上運行。 JWS將繼續爲每個呼叫創建新的會話。我想在用戶完成WebService調用後刪除/終止會話。有人對此有經驗嗎?由於WebService是較大應用程序的一部分,因此我無法減少超時。Java Web Service創建大量的Tomcat會話

回答

1

要麼將​​WS移動到它自己的Web應用程序(應該可能首先完成),並將其設置爲單獨的,安裝一個攔截對WS的調用的HTTP過濾器,並在WS響應之後關閉會話被髮送,或者讓WS本身關閉會話。

+0

感謝jwenting。將服務器移至自己的Web應用程序(同意......應該已經完成​​)並不是一種選擇。我不知道如何關閉JWS中的會話......任何想法? – BillT 2013-03-26 13:41:53

+0

@BillT如果您可以訪問WS處理程序或servlet過濾器中的HttpSession,則可以關閉它。查看API文檔。 – jwenting 2013-03-27 06:40:22

0

因此,作爲解決方法,我在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(); 

}