2011-05-13 10 views
1

이러한 특성을 가진 Java 시스템을 코딩해야합니다.Java EE의 긴 살아있는 스레드

- 시스템이 시작될 때 시스템이 실행되는 동안 영원히 살아야하는 개체를 만들어야합니다. 또한 객체의 생성자에서 새 스레드가 만들어지며 시스템이 실행되는 동안 이러한 스레드도 살아 있어야합니다.

- 시스템이 시작할 때 생성 된 객체를 사용할 웹 서비스를 노출해야합니다.

내가해야 할 일의 컨텍스트를 알려면 시작될 때 폴링 작업을 담당하는 일부 객체를 만드는 코드를 작성해야합니다. 또한 이러한 개체를 사용하여 요청을 처리하는 웹 서비스가 필요합니다.

어떻게 이것을 Java로 구현합니까? Java EE를 사용하여 웹 서비스를 구현할 생각이었고 웹 서비스를 사용하는 웹 인터페이스를 구현할 계획이기도합니다. 하지만 내가 가지고있는 큰 질문은 애플리케이션 시작 이후 영원히 사는 스레드를 Java EE에서 어떻게 구현할 수 있는가하는 것입니다.

답변

2

실제로 응용 프로그램 서버가 필요하지 않은 경우 수 있습니다. 스레딩 문제에 대해서는 the Executor framework을보고 스레드 풀에서 스레드를 쉽게 백업 할 수 있고 Runnable이 일정한 시간 (5 초마다)으로 작업하도록 예약 할 수 있습니다. 그러나 이것은 일반적으로 Java EE 컨테이너와 잘 어울리지 않습니다.

2

폴링 기능을 처리하는 스프링 타이머 작업을 사용할 수 있습니다. 스프링 타이머 작업을 선언하는 것은 간단합니다 - 여기

<bean id="scheduledTask" class="org.springframework.scheduling.timer.ScheduledTimerTask"> 
    <!-- wait 10 seconds before starting repeated execution --> 
    <property name="delay" value="10000"/> 
    <!-- run every 50 seconds --> 
    <property name="period" value="50000"/> 
    <property name="timerTask" ref="sendEmail"/> 
</bean> 
<bean id="sendEmail" class="examples.CheckEmailAddress"> 
    <property name="emailAddresses"> 
    <list> 
     <value>[email protected]</value> 
    </list> 
    </property> 
</bean> 

당신이 봄 싱글 콩으로 정의 할 수 있습니다 시작시 초기화 할 물건. 이것은 너무 복잡한 코딩없이 목적을 해결해야합니다.