我有一个在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上发现的。