我有一個在Apache ServiceMix 4上運行的CXF服務,我試圖將它安裝在Fuse 6.2上,因爲我們計劃從apache servicemix遷移到保險絲。問題是依賴關係。在這種特定情況下我的服務依賴於javax.jws中:在Jboss Fuse中處理第三方JAR
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
<version>2.1</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
如果我將web服務添加到配置文件我得到這個錯誤:
Caused by: java.lang.Exception: Unable to start bundle 285: Unresolved constraint in bundle XPTO [285]: Unable to resolve 285.1: missing requirement [285.1] osgi.wiring.package; (&(osgi.wiring.package=javax.jws)(version>=2.0.0)(!(version>=3.0.0)))
於是,我就手動添加JAXWS-API V2。 1到配置文件:
JBossFuse:[email protected]> profile-edit -b mvn:javax.xml.ws/jaxws-api/2.1 test-xpto
Adding bundle:mvn:javax.xml.ws/jaxws-api/2.1 to profile:test-xpto version:1.0
但是,我拋出一個異常說
org.osgi.framework.BundleException: Unsupported 'Bundle-ManifestVersion' value: 1
因此,我有幾個問題:
1)有沒有辦法檢查哪個bundle提供了特定的JAR?看來版本3.0.0的javax.jws已經安裝,但我很喜歡導出它的bundle。
2)是否有辦法克服第三方JAR的Bundle-ManifestVersion:1?如果不下載源代碼並製作新的POM,那麼......
3)必須始終「依靠」管理依存關係嗎?有沒有一種機制可以通過公共maven倉庫下載所有必需的罐子?畢竟他們是在我項目的POM上發現的。