2013-10-14 2 views
0

이것은이 포럼의 첫 번째 게시물입니다. 내가 규범을 위반했을 경우 사과드립니다.톰캣 저지 서블릿 초기화

Tomcat 컨테이너 안에 RESTful 서블릿을 작성하고 시작시 (JDBC를 통해) 데이터베이스에 연결 한 다음 HTTP 요청 수신시 데이터베이스에 HTTP POST 요청의 데이터를 삽입합니다.

jersey webapp 클래스에 ServletContextListener 인터페이스를 구현하여 contextInitialized 메소드에서 DB 연결을 초기화 할 수 있습니다. 그러나 나는 또한 모든 HTTP 게시물 요청에 대해 계속 호출되는 생성자를 보유하고 있습니다. 방금 흐름을 이해하기 위해 디버그 메시지를 추가 할 수 있다고 생각하면서이 생성자를 정의했습니다. 왜 Tomcat이 향하는 모든 HTTP 요청에 대한 내 웹 애플리케이션 클래스 생성자를 호출 : 내 web.xml을 나는 다음과 같다 알고 싶어 무엇 1.

로 설정 시작시로드 매개 변수가

주 내 webservice? 또한, 내 webapp의 로그에서 init 메소드가 생성자보다 먼저 호출되는 것으로 나타났습니다. 이상하게 들린다. 권리 ? 아니면 정말로? 그러나 웹 서비스에 대한 각 HTTP 요청마다 init 메소드가 호출되지 않습니다. Tomcat이 시작될 때만 호출됩니다.

톰캣 버전은 v7.0이고 JDK 1.7을 사용하고 있습니다.

이 동작을 이해하는 데 도움이됩니다.

답변

0

같은 클래스에서 여러 범위의 인공물을 동일 위치에 배치 한 것처럼 들리므로 이상한 행동입니다.

ServletContextListener는 응용 프로그램 수준 범위, 즉 싱글 톤일 것으로 예상됩니다.

반면에 저지 자원 클래스는 요청 수준 범위입니다. 즉, 수신 요청이 처리 될 때마다 생성됩니다.

두 개의 분리 된 클래스로 분리 할 것을 권장합니다.

관련 문제