문제

디렉토리에서 청취하고 해당 디렉토리에서 새 파일이 생성 될 때 일부 작업을 수행하는 매우 간단한 프로세스가 필요합니다.

나는 그렇게하는 스레드 풀이 필요하다고 생각합니다.

이것은 일반적으로 사용하지만 지금 사용할 수없는 Spring Framework를 사용하여 구현하기가 매우 쉽습니다. Tomcat 만 사용할 수 있습니다. 어떻게 구현할 수 있습니까? 그 스레드를 "시작"하는 진입 점은 무엇입니까?

서틀이어야합니까?

감사해요

도움이 되었습니까?

해결책

질문을 개선 했으므로 여기에 또 다른 답변이 있습니다. Tomcat에서 데몬을 시작하는 방법 :

먼저 Web.xml에 데몬을 등록하십시오.

<Leater> my.package.servlet.daemons < /liareer>

그런 다음 Daemons 클래스를 구현으로 구현하십시오 ServletContextListener 이와 같이:

코드는 5 초마다 호출되며 Tomcat은 앱이 종료되면 ContextDestroy를 호출합니다. 변수는 휘발성이므로 멀티 코어 시스템에서 종료에 문제가있을 수 있습니다.

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class Daemons implements ServletContextListener {
private volatile boolean active = true;

Runnable myDeamon = new Runnable() {

    public void run() {
        while (active) {
            try {
                System.out.println("checking changed files...");
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
};

public void contextInitialized(ServletContextEvent servletContextEvent) {
    new Thread(myDeamon).start();
}

public void contextDestroyed(ServletContextEvent servletContextEvent) {
    active = false;
}
}

다른 팁

당신은 a를 만들 수 있습니다 경청자 스레드를 시작하려면 좋은 생각이 아닙니다. 웹 컨테이너 내부에서 실행될 때 자신의 스레드를 시작해서는 안됩니다. 스택 오버플로에는 왜 그렇게되는지에 대한 몇 가지 질문이 있습니다. 당신은 사용할 수 있습니다 석영 (스케줄러 프레임 워크), 그러나 허용 가능한 해결책을 얻을 수 없다고 생각합니다.

어쨌든, 당신이 설명하는 것은 웹 응용 프로그램이 아니라 데몬 서비스입니다. 웹 응용 프로그램과 독립적으로이를 구현하고 서로 통신 할 수있는 수단을 만들 수 있습니다.

True Java 전용 파일 Notifiaction은 Java 7에 추가됩니다. 대략적으로 설명하는 Javadoc의 일부.

파일 시스템에서 이벤트를 관찰하는 구현은 사용 가능한 경우 기본 파일 이벤트 알림 시설에 직접 매핑하기위한 것입니다.

지금 당신은 당신을 위해 그것을하는 기본 플랫폼 의존 프로그램을 만들어야합니다.

또는 변경 사항을 탐지하기 위해 디렉토리를 자주 나열하는 일종의 폴링을 구현합니다.

~이있다 알림 라이브러리 지금 사용할 수 있습니다. Linux의 C 프로그램을 사용하여 Sourceforge에서 변경 사항을 감지합니다. 창문에서는 폴링을 사용합니다. 나는 그것이 작동하는지 확인하기 위해 그것을 시도하지 않았다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top