2017-05-09 35 views
0

我試圖從駐留在我的web.xml中的servlet init-params讀取一些參數,並通過我的程序中的變量使它們可訪問。我想我可以使用相當於HttpServlet的init()方法。JAX-RS中的Servlet init()方法

這個問題有一個解決方案: init method in jersey jax-rs web service

我認爲第一個解決方案可能會爲我工作,但問題是,ServletContextEvent只能訪問在上下文param標籤定義的paramters,我需要他們從我自己的servlet初始化-PARAMS值。

我不想將參數從我的servlet移動到context-param標記中,因爲參數實際上只與特定的servlet有關。

有人能指出我正確的方向嗎?

+1

我很困惑 - 爲什麼當JAX-RS服務不是servlet時有Servlet init params?通常,一個servlet不能訪問另一個servlets init-params。 – stdunbar

+0

@stdunbar我在說我正在使用JAX-RS API。我正在使用jax-rs的澤西島實施。 –

+0

@stdunbar JAX-RS通常作爲servlet(或servlet過濾器)運行 –

回答

1

使用Jersey,所有init-params都可以在Configuration對象中使用,您可以將其注入幾乎任何地方;資源,過濾器等

@Path("test") 
public class SomeResource { 

    @Context 
    private Configuration configuration; 

    @GET 
    public String get() { 
     return (String) configuration.getProperty(InitParams.MY_INIT_PARAM); 
    } 
} 

另請參見:

+0

有什麼方法可以在servlet啓動時獲得InitParams?我想只閱讀一次,並通過公共變量使它們可訪問。 –

+0

您可以在ResourceConfig子類構造函數中注入配置 –

+0

我收到警告:檢測到未知的HK2故障 我已經註冊了將ResourcecConfig作爲javax.ws.rs.Application擴展到我的web.xml中的類。 不知道可能是什麼問題。 完整日誌https://pastebin.com/RP31S36E –

相關問題