OSGi SOAP Web服务客户端

3
我正在尝试从OSGi获取Web服务客户端,我的容器使用Felix。目前我已经尝试过使用Apache CXF,但是无法与我的Web服务配合使用,因为它是RPC/encoded,并且在尝试生成存根时不支持。我使用了Apache Axis来生成我的存根,但现在我遇到了我的捆绑包中的依赖问题。当我的捆绑包部署时,我获得了与Apache捆绑包的依赖关系相依的依赖项。我使用Maven进行构建,并使用maven-bundle-plugin和bundleall目标来获取依赖捆绑包,但仍然遇到捆绑包依赖项的问题。我真的很想使用OSGi,因为通过捆绑包的可插拔性正是我需要的,但我花了很多时间追寻捆绑包的依赖关系。有没有明确的示例可以展示如何从OSGi消费SOAP Web服务,包括如何解决依赖关系?
2个回答

1
为了让你的生活更轻松,你可以尝试使用fuse esb(apache servicemix)或karaf。Felix是最基本的OSGi容器,而Karaf则是已经部署了许多最重要的包的Felix。Fuse(也称为servicemix)是带有更多包的karaf。Fuse带有cxf,因此你不需要操心它。
如果你真的更喜欢使用felix,请发布你的maven bundle插件配置以及在felix中运行的包列表。我已经在Felix/Karaf中使用CXF相当长一段时间来提供JAX-RS web服务,这是一个非常强大的解决方案。

谢谢您的信息,我尝试了很多方法并记得实际上我必须使用axis来生成我的存根,因为我使用的wsdls是RPC / encoded。因此,我在apache周围解决捆绑包时遇到问题。我正在尝试解决的当前捆绑包是org.apache.axiom.om包。 - broschb
好的,我已经转移到Karaf上了,情况有所改善。我实际上可以安装我的bundle。但是,当我尝试调用我的bundle激活器中的webservice调用进行测试时,我会收到noClassDefFoundError错误。下面是堆栈跟踪,但是有没有办法查看bundle的类路径如何加载?或者追踪这个问题的最佳方法是什么?我在一个bundle中有这个类可用,但它没有被正确加载。 - broschb
堆栈跟踪java.lang.NoClassDefFoundError: javax/xml/stream/util/StreamReaderDelegate at java.lang.ClassLoader.defineClass1(Native Method) Caused by: java.lang.ClassNotFoundException: javax.xml.stream.util.StreamReaderDelegate not found by org.apache.ws.commons.axiom.axiom-api [138] at org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:787) - broschb
在Karaf控制台中,您可以使用命令headers <bundle ID>查看清单中指定的包应该导入什么,如果OSGi找不到该包,则会以红色显示。您是如何生成要导入的软件包列表的?您是在maven-bundle-plugin中手动指定还是让BND处理它?通常,NoClassDef问题是因为您(或BND)没有在清单中指定类。 headers命令应该让您了解正在发生什么。 - Jon7
我检查了我的捆绑包和抛出错误的axiom-api捆绑包的头文件。它们都显示正在解决所有依赖项。并且已安装具有依赖项的捆绑包,但似乎在解析中存在某些类路径上的错误。还有其他想法如何追踪此问题吗? - broschb
我已经解决了这个问题,我的做法是在原始的基于axis 1.x的Web服务上进行包装,因为我无法在osgi环境中使其工作,并通过java-ws(CXF)公开了一个axis 2.x。现在一切都很顺利。 - broschb

0

maven-bundle-plugin的bundleall目标将为所有依赖项生成捆绑包。但是,它不会显示您必须安装它们的顺序以解决依赖关系。一个处理依赖关系非常出色的OSGi实现是Eclipse Foundation的Virgo Web Server。使用Virgo,您可以直接将bundleall目标生成的所有捆绑包复制到repository/usr文件夹中,将服务放入pickup文件夹中,运行时将为您处理依赖关系。我过去曾成功地使用过这个过程。

另外,除非您有一些不常见的依赖项,否则应该考虑从SrpingSource Enterprise Bundle Repository添加依赖项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接