Mou*_*una 5 java serialization wsdl cxf jaxb
在我的WSDL中,我有一个操作
<wsdl:operation name="theMethod">
<wsdl:input message="input1" name="input1"></wsdl:input>
<wsdl:output message="tns:classNumber1" name="classNumber1"></wsdl:output>
</wsdl:operation>
Run Code Online (Sandbox Code Playgroud)
在我的xsd中,classNumber1是一个复杂的类型,它是另一种类型的包装:classNumber2
<xs:complexType name="classNumber1">
<xs:sequence>
<xs:element minOccurs="0" name="arg0" type="tns:classNumber2"/>
</xs:sequence>
</xs:complexType>
Run Code Online (Sandbox Code Playgroud)
当我使用cxf生成类(我使用cxf maven插件)时,我希望theMethod返回一个ClassNumber1但它是一个ClassNumber2.
@WebMethod
@ResponseWrapper(localName="classNumber1" , className="com.model.ClassNumber")
public ClassNumber2 theMethod (Input1 input1){
...
}
Run Code Online (Sandbox Code Playgroud)
有没有办法告诉cxf使用包装器CLassNumber1生成方法.谢谢.
我在此文档中找到了解决方案,问题“如何将生成的 Web 服务方法调用从包装样式切换为非包装样式(或反之亦然)? ”
使用 cxf 生成保留包装器的解决方案是在 pom.xml 中添加一个绑定文件:
<defaultOptions>
<bindingFiles>
<bindingFile>${basedir}/src/main/resources/bindings.xjb</bindingFile>
</bindingFiles>
<noAddressBinding>true</noAddressBinding>
</defaultOptions>
Run Code Online (Sandbox Code Playgroud)
在绑定文件中,您将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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4005 次 |
| 最近记录: |