2011-07-27 4 views
1

나는 자바 세계에서 새롭고, 또한 바람둥이 세계에서 새롭다. 따라서 문제는 다음과 같습니다.tomcat을 사용하여 클래스를 데몬으로 설정하는 방법은 무엇입니까?

Java 클래스를 데몬으로 실행해야합니다. 이 클래스는 tomcat 요청과 comunicate 할 수 있어야합니다.

과거에는 C에서이 작업을 수행했을 때 이진 파일을 백그라운드 프로세스로 실행했습니다.

진행 방법을 알려주시겠습니까?

감사합니다.

답변

3

답변에 두 부분이있는 것 같습니다. 첫 번째는 데몬이 Tomcat 컨테이너로 시작되는지 확인하고 다른 하나는 스레드가 제대로 구성되어 있는지 확인하여 종료 후 tomcat 인스턴스를 활성 상태로 유지하지 못하게하는 것입니다.

스레딩에 관한 부분이 더 간단하기 때문에 먼저 이해할 것입니다. 스폰하는 모든 스레드는 데몬 스레드 여야합니다 (예 : Thread.setDaemon(true)). O'reilly's Exploring Java's Chapter on Threads에서 인용 :

을 많은 경우에, 우리가 정말 원하는 것은 응용 프로그램에서 간단하고,주기적인 작업을 수행 백그라운드 스레드 를 만드는 것입니다. setDaemon() 메소드를 사용하여 다른 응용 프로그램 스레드가 남아 있지 않을 때 이어야하며 삭제되어야하는 스레드를 데몬 스레드로 표시 할 수 있습니다. 일반적으로 Java 인터프리터는 모든 스레드가 을 완료 할 때까지 계속 실행됩니다. 그러나 데몬 쓰레드가 살아있는 유일한 쓰레드 인 경우 인터프리터가 종료됩니다.

라이브 데몬이 아닌 스레드를 사용하면 tomcat이 완전히 종료되지 않습니다. 그 이유는 톰캣이 셧다운 메시지를받을 때까지 하나의 비 데몬 스레드가 계속 실행되기 때문입니다.이 시점에서 스레드는 중지됩니다. 데몬이 아닌 다른 쓰레드가 있다면, JVM은 계속 퍼팅을 계속하게 될 것이고, 커맨드 라인에서 프로세스를 죽여야 할 것이다.

이제 서비스를 생성하기 위해 서블릿 컨테이너의 수명주기에 착수합니다. 여기에는 두 단계가 있습니다. Jim Garrison이 제안한대로 ServletContextListener을 구현해야합니다. 컨테이너를로드하도록 지시해야합니다.

1 단계 :하십시오 ServletContextListener 구현 :

public class MyDaemonServletContextListener implements ServletContextListener { 

    public void contextInitialized(ServletContextEvent sce) { 

     Thread th = new Thread() { 
      public void run() { 
       // implement daemon logic here. 
      } 
     }; 
     th.setDaemon(true); 
     th.start(); 
    } 

    public void contextDestroyed(ServletContextEvent sce) { 
     // you could notify your thread you're shutting down if 
     // you need it to clean up after itself 
    } 
} 

2 단계 :

<listener> 
    <listener-class>MyDaemonServletContextListener</listener-class> 
</listener> 

을 그리고 그렇게해야한다 : 당신의 web.xml에 선언 여기에 두 가지가 있습니다.

+0

감사합니다 stevevls, 당신이 말하는 것을 이해합니다. 하지만, 내가 바람둥이에게 어떻게 말할 수 있니? "이봐, 수업 X는 시작하자마자 데몬이야." – subzero

+0

@ 서브 제로 오케이 ... 나는 내 대답을 다시 썼다. 희망이 도움이됩니다. – stevevls

1

서블릿 컨텍스트 시작 및 종료시 호출 될 ServletContextListener이 필요하다고 생각합니다. 거기에서 데몬 스레드를 시작하고 중지 할 수 있습니다.

관련 문제