2013-03-26 2 views
0

Linux의 Tomcat에서 Java Web Service를 실행하고 있습니다. JWS는 각 통화에 대해 새로운 세션을 계속 생성 할 것입니다. 사용자가 WebService 호출을 완료하면 세션을 제거/종료하고 싶습니다. 누구도이 경험이 있습니까? WebService가 더 큰 응용 프로그램의 일부이므로 시간 초과를 줄일 수 없습니다.Java 웹 서비스가 많은 수의 Tomcat 세션을 생성합니다.

답변

1

WS를 고유 한 웹 응용 프로그램으로 이동하고 (별도로 설정 한 것처럼) 별도로 설정하고 WS에서 응답을 수신 한 후에 HTTP 필터를 설치하여 WS에 대한 호출을 가로 채고 세션을 닫습니다 전송되었거나 WS 자체가 세션을 닫을 수 없습니다.

+0

감사합니다. 서버를 자체 웹 응용 프로그램으로 이동하면 (이미 동의 했음에 동의 함)이 시점에서 옵션이 아닙니다. JWS의 세션을 어떻게 닫을 지 모르겠다. 어떤 생각이 드나요? – BillT

+0

@BillT WS 핸들러 또는 서블릿 필터에서 HttpSession에 액세스 할 수 있다면이를 닫을 수 있습니다. API 문서를 참조하십시오. – jwenting

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(); 

} jwenting

관련 문제