0
tomcat에서 cron4j를 사용하고 있습니다.
나는 내가 다시이 서블릿에 실수로 전화를하더라도 어떻게, 한 번 이상이 크론 작업을 시작 방지 할 서블릿cron 작업을 두 번 이상 예약하지 못하게하는 방법
doGet(){
...
S.start();
...
}
내부의 일정을 시작?
tomcat에서 cron4j를 사용하고 있습니다.
나는 내가 다시이 서블릿에 실수로 전화를하더라도 어떻게, 한 번 이상이 크론 작업을 시작 방지 할 서블릿cron 작업을 두 번 이상 예약하지 못하게하는 방법
doGet(){
...
S.start();
...
}
내부의 일정을 시작?
앞에서 설명한대로 일회성 초기화 코드는 ServletContextListener
또는 Servlet.init()
방법을 사용하는 것이 가장 좋습니다. 그러나 대답을 원하면 doGet()
에서 한 번만 수행 한 다음 서블릿에 int counter=0
이라는 인스턴스 변수를 선언하고 인스턴스 변수를 선언하십시오. 첫 번째 호출시 doGet()
이 증가합니다. counter=1
. 카운터 값을 확인하고> 0 인 경우 다시 초기화하지 마십시오. 동기화 된 블록을 사용하여 값을 증가 시키거나 휘발성으로 선언하여 더 공상적으로 만들 수 있습니다.
doGet()에서 코드를 실행하지 마십시오. 서블릿의 init() 메소드 또는 한 번만 발생하는 다른 코드 경로 (예 : 스프링 시작) –
에서 확인하십시오. 그래서 서블릿을 시작할 때 또는 서블릿을 처음 호출 할 때 서블릿 생성자가 실행됩니다. 새 바람둥이가 다시 시작될 때까지는 더 이상 전화를 걸지 않을 것입니다. –
내 편집을 참조하십시오. Servlet.init() 메서드를 대신 사용하는 것이 가장 좋습니다. 또는 [ServletContextListener] (http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContextListener.html)를 사용할 수 있습니다. Spring을 사용한다면 ApplicationContext에서 Spring을 설정하는 것이 가장 좋습니다. –