2011-05-13 93 views
1

我需要使用這些特性對Java系統進行編碼。Java EE中的長生存線程

- 當系統啓動時,需要創建一些需要在系統運行時永久生存的對象。同樣在對象的構造函數中,將創建新線程,並且在系統運行時這些線程也需要存活。

- 系統需要公開將使用在啓動時創建的對象的Web服務。

爲了給出我需要做什麼的背景,我需要編寫一個應用程序,當它啓動時,它會創建一些負責執行輪詢任務的對象。另外我需要一個使用這些對象來處理請求的Web服務。

如何在Java中實現這些功能?我正在考慮使用Java EE來實現Web服務,也是因爲我打算實現一個使用Web服務的Web界面。但是我所擁有的大問題是,如何在Java EE中實現自應用程序啓動後永遠存在的線程?

回答

2

如果你不是真的需要一個應用程序服務器,你可以provide the webservice also in a J2SE environment。對於線程問題,您可能希望看看the Executor framework,通過它您可以輕鬆地通過線程池備份您的線程,並安排Runnable按照正常工作(例如每5秒)進行工作。但是,這通常不會與Java EE容器很好地混合,因爲自己產卵的線程不受歡迎。

2

你可以使用的是Spring Timer任務來照顧你的輪詢功能。聲明彈簧計時器任務很簡單 -

<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> 

在這裏,你想在啓動時被初始化可以定義爲春季辛格爾頓豆的任何對象。這應該可以解決你的目的,不需要太複雜的編碼。