2014-11-02 98 views
0

我正在嘗試創建一個簡單的RESTful應用程序來幫助人們創建和檢索某些對象。該服務的目標是儘快提供這些對象,這就是爲什麼我在服務器啓動時以異步方式「預先創建」對象時考慮作弊的原因。我可以逃避這種模式,因爲我知道只有500種不同風格的對象可供人們請求,所以我寧願讓他們隨時坐在我的持久性存儲(redis)中進行預熱,以便在用戶要求它,它已準備好提供服務。服務器啓動時的異步服務調用

我的問題是圍繞如何啓用服務器啓動時的這種「背景/異步」處理權限(對於像jBoss/tomcat這樣的服務器,用Java編寫的RESTful服務)。把它放在類服務結果中的靜態塊中是行不通的,所以我想知道catalina文件中是否有一個配置可以鏈接到加載一個可以滿足需要的類的類。

+0

爲什麼要預先創建它們?這似乎是因爲你正在解決設計缺陷。你期待什麼類型的迴應? – 2014-11-02 01:20:10

+0

我試圖預先創建它們,因爲它需要大約30秒來創建每個對象。我對提供RESTful Shim不感興趣,我想提供一些速度,所以如果有機會在空閒的背景中佔用一些「空白」,我的服務可以工作並生成這些對象,那麼我想爲它拍攝。 無論是否是最佳設計,是否有一種簡單的方法來觸發服務器啓動時的一些代碼? – BSJ 2014-11-02 04:27:45

回答

1

我想你可能會在你的web.xml文件中尋找load-on-startup,然後如果你在HttpServlet類中使用Init方法,你可能會得到你想要的行爲。

Load-on-startup是一個指示,指示容器在啓動時立即啓動該類。

<servlet> 
    <servlet-name>ServletOne</servlet-name> 
    <servlet-class>com.yourcomp.MainServlet</servlet-class> 
    <description>This servlet is an example servlet</description> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
+0

這就是我一直在尋找的!順便說一句,考慮到我有一個相對昂貴的過程,我想運行(也就是說我不希望我的服務器啓動時間爲10分鐘),以異步方式結束繁重的處理是合理的,這樣我的服務器可以一旦它被及時初始化,仍然「服務」請求? – BSJ 2014-11-04 06:36:47

+0

是的,讓Init方法創建一個開始執行重處理的線程。 – 2014-11-04 22:58:58