3

我试图让一个从 OSGi 工作的 Web 服务客户端,我使用 Felix 作为我的容器。

到目前为止,我已经尝试过使用 Apache CXF。这不适用于我的 Web 服务,因为它是 RPC/编码的,并且在我尝试生成存根时不受支持。我使用 apache Axis 来生成我的存根,现在我在我的包中遇到了与依赖项有关的问题。当我的包被部署时,我得到了 apache 包的依赖项。

我在构建中使用了 maven,并使用了具有 bundleall 目标的 maven-bundle-plugin 来获取依赖包,但仍然遇到包依赖项的问题。我真的很想使用 osgi,因为通过 bundles 的可插拔特性正是我所需要的,但是我花了很多时间来追踪 bundle 依赖项。

是否有使用 OSGi 的 SOAP Web 服务的明确示例,包括如何解决依赖关系?

4

2 回答 2

1

为了让您的生活更轻松,您可能想尝试使用 fuse esb (apache servicemix) 或 karaf。Felix 是一个最小的 OSGi 容器,而 Karaf 是 Felix,已经部署了许多最重要的包。Fuse(也称为 servicemix)是具有更多捆绑包的 karaf。Fuse 带有 cxf,所以你不必弄乱它。

如果您真的更喜欢使用 felix,请发布您的 maven bundle 插件配置以及在 felix 中运行的 bundle 列表。我在 Felix/Karaf 中使用 CXF 来服务 JAX-RS Web 服务已经有一段时间了,它是一个非常强大的解决方案。

于 2011-07-24T04:49:56.190 回答
0

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

在相关说明中,除非您有一些不常见的依赖项,否则您应该考虑从SrpingSource Enterprise Bundle Repository添加依赖项。

于 2011-07-25T02:41:31.353 回答