gpt4 book ai didi

java - 如何告诉 cxf 将包装器类型保留在方法中?

转载 作者:搜寻专家 更新时间:2023-10-31 20:11:42 25 4
gpt4 key购买 nike

在我的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com