0

要求

  1. 需要调用具有 wsdl 的 web 服务,该服务不会通过浏览器打开。
    我有一个 wsdl 文档,其中给出了一个虚拟端点。
    一旦生成了存根类等,应在运行时更改端点。

  2. 必须调用第三方方法,该方法将在 SOAP 消息中添加标头,此方法仅接受 SOAP 消息,必须从我们应该添加到流中的 SoapHandler 调用此方法。

我已经尝试过所有以下内容

Axis 2
该服务与 Axis2 配合良好,除了我只能访问处理程序中的 AxisMesage 而不能访问 SOAP 消息,因此我无法调用我的第三方方法失败的问题

Axis 1.4 服务运行良好,我可以访问 SOAP 消息,我可以使用它来调用第三方方法

Apache CXF、JAX-WS 等
由于 wsdl 不可用,如果我使用新的 wsdl 端点初始化服务类,或者如果我通过 bindingProvider 设置端点,则会引发异常,因此我无法调用服务。

问题
由于 Axis 1.4 很旧,因此普遍认为远离它。

Axis 2 很好,除了 AxisMessage 问题,有没有办法在我添加到 Axis 的处理程序中访问 SoapMessage。我能够添加的处理程序只是 Axis2 处理程序

在 CXF 和 JAX-WS 中,我可以添加我有 SoapMessage 的通用处理程序,但是当服务类被初始化或使用 BindingProvider 设置时它们会失败

任何建议
谢谢
查理

4

1 回答 1

0

在 Axis2 中,AxisMessage 不代表当前消息。相反,它代表一个wsdl:message元素,即它是服务描述的一部分。要获取 SOAP 消息,请SOAPEnvelopeMessageContext.

于 2012-05-24T18:37:57.107 回答