2015-11-25 74 views
0

我有一個在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上發現的。

回答

0

對於捆綁形式的罐子,您可以將它們安裝爲捆綁包。

對於非捆綁形式的罐子,您需要使用「包裝」命令安裝它們。這可能是你爲什麼得到Bundle-ManifestVersion錯誤的原因,因爲jar的清單文件中沒有該屬性。看到這裏:https://access.redhat.com/documentation/en-US/Fuse_ESB_Enterprise/7.1/html/Deploying_into_the_Container/files/DeployJar-Wrap.html

如果你正在部署單獨的捆綁包,那麼是的,依賴關係需要手動處理。爲了使生活更輕鬆,您可以將它們全部放在功能文件中,並部署引用所有依賴關係的功能文件。看到這裏:https://access.redhat.com/documentation/en-US/Red_Hat_JBoss_Fuse/6.0/html/Deploying_into_the_Container/files/DeployFeatures-Create.html

0

我試圖部署JBoss快速啓動應用程序'肥皂'時有同樣的例外。 '(&(osgi.wiring.package = javax.jws)(version> = 2.0.0)(!(version> = 3.0.0)))'是我例外的重要部分。

我不得不去在JBOSS_HOME /等,並在正確的JRE jre.properties您正在使用的變化:

javax.jws中,\

javax.jws中;版本= 「2.0」,\

javax.jws.soap中,\

javax.jws.soap; version =「2。0「,\

這解決了我的問題