SOAP绑定类型对生成的WSDL没有影响

时间:2014-02-24 11:15:01

标签: web-services soap wsdl

我尝试了来自mkyong网站的示例代码并使用参数组合进行了游戏。 我尝试将javax.jws.soap.SOAPBinding.Use.LITERAL更改为用于RPC样式服务接口的javax.jws.soap.SOAPBinding.Use.ENCODED。

    package com.mkyong.ws;

    import javax.jws.WebMethod;
    import javax.jws.WebService;
    import javax.jws.soap.SOAPBinding;
    import javax.jws.soap.SOAPBinding.Style;
    import javax.jws.soap.SOAPBinding.Use;
    import javax.jws.soap.SOAPBinding.ParameterStyle;

    //Service Endpoint Interface
    @WebService
    @SOAPBinding(style = Style.RPC, use = Use.ENCODED, parameterStyle = ParameterStyle.WRAPPED)
    public interface HelloWorld{

        @WebMethod String getHelloWorldAsString(String name);

    }

唯一的变化是use = Use.LITERAL而不是use = Use.ENCODED我现在<soap:body>。 但是,生成的WSDL似乎根本没有变化。

在两种情况下创建的WSDL仍然将<soap:body use="literal" use属性显示为“literal”。

<binding name="HelloWorldImplPortBinding" type="tns:HelloWorld">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"></soap:binding>
    <operation name="getHelloWorldAsString">
        <soap:operation soapAction=""></soap:operation>
        <input>
            <soap:body use="literal" namespace="http://ws.mkyong.com/"></soap:body>
        </input>
        <output>
            <soap:body use="literal" namespace="http://ws.mkyong.com/"></soap:body>
        </output>
    </operation>
</binding>

在我的界面声明中是否存在错误?

use="Encoded"

这是对的吗?我不应该期待{{1}}吗?

1 个答案:

答案 0 :(得分:0)

在一些WS实现中,没有实现Use.ENCODED。 这可能是使用相同WSDL的原因之一。 JAXWS 2.0不支持rpc / encoded wsdls。 JAXWS 2.2中也不支持rpc / encoded。 请参阅以下链接。 https://jax-ws.java.net/2.2.1/docs/annotations.html