2014-03-25 2 views
2

Tomcat 서버 작동 방식에 대해 알고있는 바는 웹 애플리케이션에 Java 서블릿이있는 경우 서버가 시작될 때마다 init() 메소드가 호출된다는 것입니다.자바 서블릿에서 init() 메소드 디버깅

그런 경우 어떻게 init() 메서드를 디버깅 할 수 있습니까? 중단 점을 분명히하는 것은 작동하지 않으며 어떤 이유로 든 System.out.println 문은 서버 콘솔에 출력을 생성하지 않습니다.

올바른 웹 응용 프로그램 (.war)이 배포되어 있고 내 Tomcat 서버의 webapps 폴더에서 제대로 추출되었는지 확인했습니다.

+0

중단하고'에 println을 (첫 번째 후 콘솔에 println 문을 볼 수 호출)()'메소드가 작동해야합니다. 코드를 게시 할 수 있습니까? –

+0

@Sotirios Delimanolis 님이 질문에 답변했습니다. – wrahool

+0

나는 서블릿이 초기화되었을 때조차도 중단 점이'init()'메소드에서 작동하지 않는다는 것을 당신의 진술로 들었다. 네, 소티 리오스의 해결책이 필요합니다. –

답변

5

배포 설명자 서블릿 선언에 load-on-startup 값이 0보다 큰 것 같습니다. 해당 요소를 생략하면 Servlet은 요청을 처리해야한다고 컨테이너가 판단한 경우에만 초기화됩니다. 그때까지 init 메서드는 호출되지 않습니다. 그래서

<servlet> 
    <servlet-name>servlet</servlet-name> 
    <servlet-class>com.example.YourServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

처럼 load-on-startup 가치를 제공함으로써

당신은 초기화 컨테이너를 이야기하는 Servlet 바로 때문에 오히려 그 서블릿에 대한 첫 번째 요청이 도착했을 때보다, 시작시 init 메소드를 호출.

1

올바르지 않습니다. 서버를 시작할 때 init() 메서드가 호출되지 않습니다. 이것은 한 번만 호출되며 동일한 init() 메소드가 속한의 첫 번째 호출에서 호출됩니다.

각 Servet에는 하나의 init()이 있으므로 서블릿을 처음 호출 할 때 각 servlet에 대한 init()이 호출됩니다. 즉 컨테이너가 서블릿을로드하고 인스턴스를 생성 한 후 init() 메소드가 호출됩니다.

중 하나는 서블릿의 web.xml에서, serlvet에

  • 가지 적어 호출을 시작할

    • 로드 할
  • 관련 문제