处理Jboss Fuse中的第三方JAR

时间:2015-11-25 10:34:32

标签: maven osgi jbossfuse

我在Apache ServiceMix 4上运行了一个CXF服务,我试图在Fuse 6.2上安装它,因为我们正计划从apache servicemix迁移到fuse。问题是依赖性。在这个特定的实例上,我的服务依赖于javax.jws:

<dependency>  
<groupId>javax.xml.ws</groupId>  
<artifactId>jaxws-api</artifactId>  
<version>2.1</version>  
<type>jar</type>  
<scope>compile</scope>  
</dependency>  

如果我将我的webservice添加到配置文件中,我会收到此错误:

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:admin@root> 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)有没有办法检查哪个捆绑包提供特定的JAR?似乎安装了3.0.0版本的javax.jws,但我想知道哪个bundle正在导出它。

2)有没有办法克服Bundle-ManifestVersion:1为第三方JAR?没有下载源并制作新的POM,那就是......

3)必须始终管理依赖关系&#34;手工&#34;?是否有通过公共maven存储库下载所有必需的罐子的保险丝?毕竟他们在我项目的POM中被识别出来。

2 个答案:

答案 0 :(得分:0)

对于捆绑形式的罐子,您可以将它们作为捆绑包安装。

对于非捆绑形式的jar,您需要使用“wrap”命令安装它们。这可能是您获取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

答案 1 :(得分:0)

在尝试部署JBoss快速入门应用程序&soap 39时,我遇到了同样的例外情况。 &#39;(&amp;(osgi.wiring.package = javax.jws)(版本&gt; = 2.0.0)(!(版本&gt; = 3.0.0)))&#39;对我来说是例外的重要部分。

我必须转到JBOSS_HOME / etc中的jre.properties并在正在使用的正确JRE下进行更改:

javax.jws中,\

javax.jws中;版本=&#34; 2.0&#34; \

javax.jws.soap中,\

javax.jws.soap中;版本=&#34; 2.0&#34; \

这解决了我的问题