2016-08-02 100 views
0

我有一個簡單的Rest應用程序,它部署到IBM MobileFirst 7.1 Liberty Server。 (我不知道JAX-RS的實現,但它包含在我相信的Liberty服務器運行時)JAX-RS - 從jar文件加載@Provider類

我必須與其他團隊分享我的一些通用代碼,所以我將一些代碼移入一個單獨的Maven項目將被加密並添加爲服務器庫。這一切都很好,直到我不得不將一些@Provider註釋類添加到單獨的maven項目中。具體來說,一些使用@Provider註釋標記的ExceptionMapper實現。

我已經嘗試在應用程序類getClasses()方法中直接設置類。這似乎工作,但我收到一條警告消息,說我的異常映射器實現需要用@Provider或@Path註釋(他們是)標記。

是否有某種方法讓JAX-RS從Jar文件中識別這些資源類?

+0

請始終提及您的IBM MobileFirst版本... –

+0

@IdanAdar我們正在運行MFP 7.1 –

回答

1

爲了讓@Provider得到識別,請嘗試將JAR放入adapter/lib文件夾而不是server/lib文件夾中。

+0

有沒有辦法在服務器/ lib目錄中執行它?現在,我在每個適配器上都有10份以上的相同精確jar,因爲它們都使用它。我也將它放在server/lib目錄下,因爲我有自定義的身份驗證器,它們也使用它的一些類。難以管理 –

+0

對不起,但沒有。適配器位於沙箱內部,這就是爲什麼您可以部署它並輕鬆取消部署的原因。只有在適配器類加載器內才能完成註釋類的掃描。 server/lib是適配器的父類加載器,並且在那裏找不到它。 –

+0

這很有道理,謝謝你的進一步解釋。 –