2012-10-22 44 views
2

我似乎真的在這裏苦苦掙扎。我想要做的(按此順序)是:使用Jersey(REST資源),OSGi(Apache Felix)和Maven(構建和部署)的示例?

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

2)打包,安裝並將該軟件包作爲HTTP服務(包括依賴項)啓動到Felix OSGi容器中。

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

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

我似乎無法找到甚至是單個步驟的工作示例,尤其是涉及Maven的工作,更不用說這些步驟的組合。我曾嘗試過從不同級別的成功網絡中整理出各種各樣的網頁,但還不是端到端的工作示例。

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

回答

3

我沒有對新澤西州的例子,但我有一個tutorial for CXF with Apache Karaf(使用菲利克斯)。它顯示瞭如何創建Rest服務並使用maven構建它。使用Apache Karaf,您可以直接從Maven倉庫部署捆綁軟件。將此移至澤西可能只是意味着交換lib並使用另一個藍圖配置來初始化其餘服務。

Apache卡拉夫也允許部署戰爭和工作,但我還沒有測試過它們。

3

Apache Stanbol會執行其大部分或全部功能(不確定是否包含開箱即用的戰爭包裝)來實施其RESTful服務。

您將不得不挖掘其codebase,但在那裏搜索Jax-RS註釋應該指向正確的位置。

+0

這是有益的,但我希望的東西更簡單。我所遇到的問題似乎與我從各種渠道一起拼湊一切。 我會看看我能在本週使用Stanbol。 – KJQ

1

我也正在努力與你正在嘗試做什麼。到目前爲止,我似乎真的非常接近,但可惜不能令人信服,這是我一直在做:

  1. 創建與Maven一個戰爭定義我的球衣資源的
  2. 與Maven捆綁插件捆綁(見部分Adding OSGi metadata to existing projects without changing the packaging type)。這使我可以在Tomcat中運行restlets並進行測試。
  3. 在Eclipse中定義一個目標,其中包含我使用p2-maven-plugin插件創建的本地定義的p2站點中的資源。通過這種方式,我可以將WAR項目中的任何依賴項收集到一個p2站點中,我可以將它部署到Eclipse定義的目標上
  4. 我卡在哪裏試圖將Jersey資源註冊爲服務,我試過了:
  5. 使用JAX-RS OSGI connector,我最終放棄了它,因爲它使用了glassfish澤西島,當澤西島還沒有定義第2版API時,它似乎可以導出澤西的第2版API。當我想使用Jersey libs版本1.17時,這會導致程序包解析問題。
  6. 使用白板註冊資源la Apache Felix HTTP Service,我目前似乎還沒有工作的方法。
  7. 最後,如果前面沒有工作,我會盡力Amdatu
  8. 我可能會嘗試另一條路線是從Jersey project OSGI chapter
1

我試過這個組合,並使其運行起來 -

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

2- OSGi實現 - >的Apache菲利克斯4.4.0

3- OSGi運行時 - >的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遷移到Jersey,因爲Jersey是JAX-RS的輕等待參考實現。現在我打算使用Apache和Felix/Apache Karaf一起使用Jersey。您可以在Karaf中安裝Jersey,並將Jersey Rest Web Services作爲Bundle進行部署。您可以參考本教程 - https://vzurczak.wordpress.com/2014/09/30/web-applications-with-osgi-working-with-jersey/

+0

這看起來很有前途。 – KJQ