我尝试了来自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}}吗?
答案 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