2009-09-24 2 views
2

휴대용 서블릿 내에서 서블릿 컨테이너를 정상적으로으로 종료하도록 요청하는 방법이 있습니까?서블릿에서 서블릿 컨테이너를 종료하는 방법은 무엇입니까?

휴대용은 모든 표준 준수 컨테이너 (Tomcat, Jetty, Winstone 등)에서 작동하는 기술을 의미합니다.

이것은 Servlet.destroy() 메소드의 반대입니다. 컨테이너가 서블릿을 다운시킬 때 호출됩니다.

+4

나쁜 아이디어이기 때문에 휴대용 방식은 없습니다. – skaffman

+0

흠 .. 그럼 어떻게하면 휴대용으로 컨테이너를 업그레이드 할 수 있습니까? – HRJ

+2

@HRJ : 멋지게 넣으려면,하지 마십시오. 컨테이너의 특정 종료 순서를 사용합니다. – Powerlord

답변

1

System.exit();

SecurityManager없이 실행중인 경우.

편집 :이게 유익한가요? 이것은 컨테이너에 따라 다릅니다. 당신은 그것은 shutdown.sh 또는 Catalina.stop() 종료 훅은 단순히 정지를 호출하기 때문에()로 우아한입니다 0

System.exit(0); 

로를 호출하는 경우 톰캣에

.

+0

하지만 ** 우아한 **입니까? – HRJ

+0

더 많은 생각과 다른 해결책이없는 상황에서 이것은 좋은 방법처럼 보입니다. 컨테이너는 종료 훅을 VM에 등록하여 우아함을 보장 할 수 있습니다. – HRJ

+0

서버가 종료 훅을 등록했다는 보장은 없습니다. 이는 서버가 어떻게 구현되는지에 달려 있습니다. 또한 종료 요청과 동시에 이루어진 요청은 일관성없는 상태에서 종료 될 수 있으므로 동시성 문제가 발생합니다. – gustafc

4

내가 알고있는 Java EE Servlet Spec에 정의 된 방법이 없습니다. 휴대용 일 수 있어야합니다.

서블릿 API 사양에 연결하면, 그런 방법이 있다면 어딘가에 문서화됩니다.

또한 하나의 서블릿이 컨테이너를 종료 할 수 있다는 것은 정말 나쁜 생각 일 것입니다.

+0

승인 된 답변이어야합니다. –

관련 문제