在我的 WSDL 中我有一个操作
<wsdl:operation name="theMethod">
<wsdl:input message="input1" name="input1"></wsdl:input>
<wsdl:output message="tns:classNumber1" name="classNumber1"></wsdl:output>
</wsdl:operation>
在我的 xsd 中,classNumber1
是一个复杂类型,它是另一种类型的包装器:classNumber2
<xs:complexType name="classNumber1">
<xs:sequence>
<xs:element minOccurs="0" name="arg0" type="tns:classNumber2"/>
</xs:sequence>
</xs:complexType>
当我用 cxf 生成类时(我使用 cxf maven 插件),我希望 theMethod
返回一个 ClassNumber1
但它是一个 ClassNumber2
.
@WebMethod
@ResponseWrapper(localName="classNumber1" , className="com.model.ClassNumber")
public ClassNumber2 theMethod (Input1 input1){
...
}
有没有办法告诉 cxf 使用包装器 CLassNumber1 生成方法。 谢谢。
最佳答案
我在这个 doc 中找到了解决方案,问题“如何将生成的 Web 服务方法调用从包装器样式切换为非包装器样式(或反之亦然)?”
通过生成 cxf 保留包装器的解决方案是在 pom.xml 中添加一个绑定(bind)文件:
<defaultOptions>
<bindingFiles>
<bindingFile>${basedir}/src/main/resources/bindings.xjb</bindingFile>
</bindingFiles>
<noAddressBinding>true</noAddressBinding>
</defaultOptions>
在绑定(bind)文件中,您将 enableWrapperStyle 设置为 false:
<jaxws:bindings
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns="http://java.sun.com/xml/ns/jaxws"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws">
<enableWrapperStyle>false</enableWrapperStyle>
</jaxws:bindings>
关于java - 如何告诉 cxf 将包装器类型保留在方法中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23270996/