2011-07-22 235 views
2

我想從OSGi獲得一個Web服務客戶端,我使用Felix作爲我的容器。OSGi SOAP Web服務客戶端

到目前爲止,我嘗試過使用Apache CXF。這不適用於我的Web服務,因爲它是RPC /編碼的,當我嘗試生成存根時不受支持。我使用Apache Axis生成我的存根,現在我遇到了捆綁中的相關問題。當我的bundle被部署時,我得到了依賴關係w /依賴於apache包。

我對我的構建使用了maven,並且使用了包裝目標的maven-bundle-plugin獲取依賴包,但仍遇到包依賴關係的問題。我真的很想使用osgi,因爲通過捆綁包的可插入特性正是我所需要的,但是我花了很多時間來追逐捆綁包依賴關係。

是否有任何清楚的OSGi SOAP Web服務消耗示例,包括如何解決依賴關係?

回答

1

爲了讓您的生活更輕鬆,您可以嘗試使用fuse esb(apache servicemix)或karaf。費利克斯是一個最低限度的OSGi容器,而卡拉夫是費利克斯,已經部署了許多最重要的軟件包。保險絲(也稱爲servicemix)是更多捆綁包的卡拉夫。保險絲帶有cxf,所以你不必惹它。

如果您真的想使用felix,請發佈您的maven bundle插件配置以及以felix運行的bundles列表。我一直在Felix/Karaf中使用CXF來爲JAX-RS webservices服務很長一段時間,這是一個非常強大的解決方案。

+0

感謝您的信息,我已經嘗試了很多事情,並記得我實際上不得不使用axis來生成我的存根,因爲我使用的wsdls是RPC /編碼。所以我遇到問題解決Apache周圍的捆綁。我正在嘗試解決的當前捆綁軟件包是org.apache.axiom.om – broschb

+0

ok,我已經轉移到karaf,並且工作情況稍好一些。我實際上可以安裝我的軟件包。但是,當我真的嘗試調用我的bundle激活器中的webservice調用來測試時,我得到noClassDefFoundError。下面是堆棧跟蹤,但是有沒有辦法查看如何爲bundle加載類路徑?或者什麼是最好的方法來跟蹤這個呢?我有一個捆綁包中可用的類,但它沒有正確加載。 – broschb

+0

堆棧跟蹤 java.lang.NoClassDefFoundError:的javax/XML /流/ util的/ StreamReaderDelegate \t在java.lang.ClassLoader.defineClass1(本機方法) 引起:拋出java.lang.ClassNotFoundException:javax.xml.stream。 util.StreamReaderDelegate找不到org.apache.ws.commons.axiom.axiom-api [138] \t at org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:787) – broschb

0

maven-bundle-plugin的bundleall目標將爲您的所有依賴項生成bundle。但是,它不會顯示您必須安裝它們才能解決依賴關係的順序。一個處理依賴性很好的OSGi實現是Virgo Web Server from the Eclipse Foundation。通過處女座,您可以直接將由bundleall目標生成的所有bundle直接複製到repository/usr文件夾中,將您的服務放入pickup文件夾中,運行時將爲您處理依賴關係解析。過去我成功地使用了這個過程。

在相關說明中,除非您有一些不常見的依賴關係,否則您應該考慮從SrpingSource Enterprise Bundle Repository添加依賴關係。