如何转换为SOAP 1.1生成的WSDL文件以支持SOAP 1.2

时间:2011-06-24 11:40:06

标签: java soap axis2 wsdl2java

多年前,我基于我给出的WSDL构建了一个SOAP 1.1服务。这是相当基本的:我执行了Axis的WSDL2Java并使用生成的类作为基础。

现在我被告知要迁移这项服务,以便人们可以使用SOAP 1.2来实现它。

我应该在WSDL文件中更改什么,以便我的新生成的服务(仍使用Axis的WSDL2Java)支持SOAP 1.2?

了解我是服务提供商非常重要:我不希望只为客户服务的解决方案。

非常感谢!

1 个答案:

答案 0 :(得分:4)

在结构上,您需要在WSDL文档中添加对SOAP 1.2的支持。 您的“抽象”WSDL部分定义了类型,消息和portType。 (我在这里假设您要更新WSDL1.1文档以为现有服务添加SOAP1.2支持)

要支持SOAP1.2,您需要添加符合SOAP1.2的绑定和服务定义。 例如,我们有这个端口定义:

<wsdl:portType name="ServerSoap">
    <wsdl:operation name="SomeOperation"> ...

您需要为您的操作添加SOAP1.2绑定部分:

<wsdl:binding name="ServerSoap12" type="tns:ServerSoap">
    <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
    <wsdl:operation name="SomeOperation">
        <soap12:operation soapAction="..." style="document" /> ...

一项服务:

<wsdl:service name="Server">
        <!-- SOAP1.1 Service -->
        <wsdl:port name="ServerSoap" binding="tns:ServerSoap">
        <soap:address location="http://localhost:8080/Server" />
    </wsdl:port>

        <!-- SOAP1.2 Service -->
    <wsdl:port name="ServerSoap12" binding="tns:ServerSoap12">
        <soap12:address location="http://localhost:8080/Server" />
    </wsdl:port>
</wsdl:service>

请注意,这两个定义可以共存,您的服务可以保持向后兼容SOAP1.1。客户端必须选择使用SOAP1.1或SOAP1.2。

实际上,您可以尝试从您拥有的代码生成WSDL,指示Axis为SOAP1.2生成绑定。我不是AXIS用户,所以RTM java2wsdl是一种方法。