簡體   English   中英

使用Jersey(REST資源),OSGi(Apache Felix)和Maven(構建和部署)的示例?

[英]Example using Jersey (REST resource), OSGi (Apache Felix), and Maven (build and deploy)?

我好像在這里苦苦掙扎。 我想做的(按此順序)是:

1)使用Jersey應用程序和帶注釋的資源構建RESTful資源(這不是問題)。

2)將該包打包,安裝並啟動到Felix OSGi容器中,作為HTTP服務,包括依賴項。

3)在OSGi容器中打包,安裝和啟動WAR,可以將#2作為依賴項。

我希望能夠使用Maven完成所有這些工作。

我似乎無法找到一個甚至是個別步驟的工作示例,特別是涉及Maven,這項工作更不用說這些步驟的組合了。 我曾嘗試在網絡上拼湊各種不同的q&a,並取得了不同程度的成功,但還沒有成為端到端的工作實例。

任何指針將不勝感激......

我沒有針對Jersey的示例,但我有一個使用Apache Karaf (使用Felix)的CXF教程 它顯示了如何創建Rest服務並使用maven構建它。 使用Apache Karaf,您可以直接從maven倉庫部署捆綁包。 移動到Jersey可能只是意味着交換lib並使用另一個藍圖配置初始化其余服務。

Apache Karaf也允許部署戰爭和wabs,但我還沒有測試過它們。

Apache Stanbol完成大部分或全部(不確定戰爭包裝是否包含在內)以實現其RESTful服務。

您將不得不深入挖掘其代碼庫,但在那里搜索Jax-RS注釋應該指向正確的位置。

我也正在努力完成你正在嘗試做的事情。 到目前為止,我似乎非常接近,但唉不是那里,這就是我一直在做的事情:

  1. 用Maven創建一個定義我的Jersey資源的戰爭
  2. 將其與maven bundle插件捆綁在一起(請參閱將OSGi元數據添加到現有項目而不更改打包類型一節 )。 這允許我在Tomcat中運行restlet並進行測試。
  3. 在Eclipse中定義一個目標,其中包含我使用p2-maven-plugin插件創建的本地定義的p2站點的資源。 通過這種方式,我可以將WAR項目中的任何依賴項收集到p2站點中,我可以將其部署到Eclipse定義的目標
  4. 我被困的地方是嘗試將Jersey資源注冊為服務,我已經嘗試過:
  5. 使用JAX-RS OSGI連接器 ,我最終放棄了,因為它使用的是glassfish jersey,當Jersey尚未定義版本2 API時,它似乎導出了Jersey的第2版API。 當我想使用Jersey libs的1.17版時,這會導致包解析問題。
  6. 使用白板和Apache Felix HTTP服務注冊資源,我目前的方法似乎還不行。
  7. 最后,如果前面不起作用,我會嘗試Amdatu
  8. 我可能嘗試的另一條路線來自Jersey項目OSGI章節

我嘗試了這個組合,並使其運行 -

1-模塊化規范 - > OSGi規范

2- OSGi實現 - > Apache Felix 4.4.0

3- OSGi Runtime - > Apache Karaf 3.0.3

4- REST的軟件架構規范 - JAX-RS

5- JAX-RX實現 - > Apache CXF - 2.7.5

你可以參考這個很好的教程 - http://java.dzone.com/articles/building-cxf-rest-service-osgi

現在,我也計划從CXF搬到澤西島,因為澤西島是JAX-RS的輕型等待參考實施。 現在我計划將Jersey與Apache Felix / Apache Karaf一起使用。 您可以在Karaf中安裝Jersey並將Jersey Rest Web Services部署為Bundle。 你可以參考這個教程 - https://vzurczak.wordpress.com/2014/09/30/web-applications-with-osgi-working-with-jersey/

這是github上的一個很好的例子: https//github.com/ddragosd/jax-rs-on-karaf

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM