从OSGi客户端

时间:2015-12-08 12:45:17

标签: osgi axis2 rampart

我们正在使用Axis2和Rampart进行SOAP Web服务。普通客户端调用存根时,会正确创建SOAP消息(使用WS-Security标头)并在服务器上进行服务。当我们将客户端(连同WS Stub和依赖关系)包装在一个包中并在OSGi(Felix Karaf)下执行时,不会生成标头,这会导致服务器返回SoapFault。

我尝试过的事情是

  • 确认正在访问mar文件,并且在OSGi中“使用”了该文件
  • 确认所有正在使用的罐子的版本
  • 检查发送的SOAP消息 - 注意到两个不同之处
    • 来自标准客户端的消息声明并缩写了名称空间,而OSGI版本在每个节点中都有名称空间
    • OSGI消息没有WS-Security Header

我使用了一个复合OSGI包,其中包含一个包中所有依赖的非OSGI jar文件。

  • 编辑1 - 通过axis2 / rampart代码
  • 进一步调查后

我在OSGI中直接调试代码并直接在JVM上调试代码,并注意到分歧点是轴引擎在加载“安全”处理程序时调用rampart,而rampart则使用默认策略文件而不是mar文件在“axis.repo.path”中指定。然后我看着由rampart加载策略 - 注意到它没有加载配置的策略但是无法识别问题。

任何见解都将不胜感激。

此致 哈

1 个答案:

答案 0 :(得分:0)

我想ws-security是在Axis中使用某种插件机制实现的。可能这种机制在OSGi中不起作用。

我建议尝试使用CXF。它在OSGi中运行良好。