2014-03-06 18 views
0

我期待在Java中實現一個非常簡單的REST Web服務。這不是我的主要工作,所以對我來說一切都是新的。Java REST服務的生存期和初始化

我一直在研究Java和JAX-RS的實現。他們看起來並不那麼困難,但我一直無法理解服務的生命週期以及它是如何由Web服務器創建的。

恐怕我的服務可能不得不做一些代價高昂的初始化,比如從文件或資源中加載一堆安裝數據以便能夠處理請求。我不知道我是否每次需要處理請求時都必須這樣做。

所以,我的問題是,我的服務的一生是什麼?在響應請求之前,我可以從文件加載一堆用於我的Web服務的參數嗎?我需要加載的參數不會改變,並且對於所有請求應該是相同的(因此它是無狀態的),但是我需要能夠從某處加載該數據,並且我擔心它會被迫做它針對每個請求。那麼,我的Web服務可以「存活」或被緩存,只需要進行一次初始化或每個線程一次,而不是每個請求一次?

編輯:我還沒有決定使用哪個JAX-RS實現或哪個服務器。我只是對這樣的事實感興趣,它可以完成,並且它對我選擇哪種實現很重要。

回答

3

只是舉一個使用Jersey的例子,它是JAX-RS的一個實現。根資源類的默認生命週期是每個請求按照指定的here創建它自己的實例。因此,如果你在服務中有一些初始設置,並且它們對於所有請求都是相同的,那麼你可以將它們放在資源類的靜態字段中,並使用靜態塊來初始化它們,因爲靜態變量是以每個類爲基礎創建的。類似這樣的:

private static MyParam params; 

static { 
    params = new MyParam("/path/to/file/setup.conf"); 
}