使用wsimport生成的代理调用WS时,我收到错误:" SOAP 1.2消息在发送到仅限SOAP 1.1的端点时无效。"

时间:2018-06-05 16:02:02

标签: tomee wsimport soap1.2

我在一个Java程序上工作,在Tomee 7.0.3服务器和JDK1.7.0_40上运行。我的程序必须调用远程Web服务。此Web服务属于合作伙伴,到目前为止,我只在SOAP-UI项目中拥有WSDL和Mock服务。 我使用wsimport来生成代理。由于WSDL使用SOAP1.2,我收到一条错误消息,邀请我添加" -extension"选项,然后它似乎工作:我得到我的代理。 但是当我运行我的程序时,SOAP-UI Mock服务会返回此错误:

A SOAP 1.2 message is not valid when sent to a SOAP 1.1 only endpoint.

然而,SOAP-UI项目和Mock服务是使用与代理相同的WSDL创建的。

这是WSDL的开头,显示了SOAP1.2引用:

<wsdl:definitions xmlns:ns="http://tempuri.org"
                  xmlns:ns1="http://tempuri.org/xsd" 
                  xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
                  xmlns:wsoap12="http://schemas.xmlsoap.org/wsdl/soap12/" 
                  name="aAPIs" targetNamespace="http://tempuri.org">
    <wsdl:types xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <xsd:schema xmlns:ns="http://tempuri.org/xsd"
                    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
                    targetNamespace="http://tempuri.org/xsd">

但是当我查看我发送给Mock服务的SOAP请求时(感谢JaxWS处理程序),我可以看到soap命名空间引用SOAP 1.1而不是1.2:

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
    ...
</soap:Header>
<soap:Body>
    ...
</soap:Body>

所以在我看来,我的代理正在使用SOAP1.1,尽管WSDL引用了SOAP 1.2。 有没有办法强制代理使用SOAP 1.2?例如,添加到wsimport的选项?

我感谢你的帮助。

0 个答案:

没有答案