gpt4 book ai didi

java - 为什么 wsimport 生成的类需要 JAXBElement 参数?

转载 作者:搜寻专家 更新时间:2023-11-01 01:45:26 25 4
gpt4 key购买 nike

我有一个来自 Axis2 Web 服务的 WSDL 文件。当我使用 wsimport 给定 WSDL 文件生成客户端 stub 时,生成的类需要 JAXBElement 参数。为什么会这样?

其中一个生成类的示例方法:

JAXBElement<DataBean> value;

public void setValue(JAXBElement<DataBean> value)
{
this.value = ((JAXBElement<DataBean>) value);
}

我希望它看起来像这样(没有 JAXBElement):

DataBean value;

public void setValue(DataBean value)
{
this.value= (DataBean) value;
}

我在网上看到的教程没有将类设置为JAXBElement。可能是什么问题呢?请注意,服务器是 Axis2 web 服务,WSDL 文件由 Axis2 自动生成。假设我无法控制服务器。

我怎样才能使 wsimport 不会将参数转换为 JAXBElements?

以下是 WSDL 文件的摘录:(我忽略了一些标签,只包含必要的标签)

<xs:element name="getData">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="getData" nillable="true" type="ax220:getData"/>
</xs:sequence>
</xs:complexType>
</xs:element>

<xs:complexType name="getData">
<xs:sequence>
<xs:element minOccurs="0" name="value" nillable="true" type="ax219:DataBean"/>
</xs:sequence>
</xs:complexType>

<wsdl:message name="getDataRequest">
<wsdl:part name="parameters" element="ns:getData"/>
</wsdl:message>

<wsdl:message name="getDataResponse">
<wsdl:part name="parameters" element="ns:getDataResponse"/>
</wsdl:message>

<wsdl:operation name="getData">
<wsdl:input message="ns:getDataRequest" wsaw:Action="urn:getData"/>
<wsdl:output message="ns:getDataResponse" wsaw:Action="urn:getDataResponse"/>
</wsdl:operation>

<wsdl:operation name="getData">
<soap:operation soapAction="urn:getData" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>

<wsdl:operation name="getData">
<soap12:operation soapAction="urn:getData" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
</wsdl:operation>

<wsdl:operation name="getData">
<http:operation location="getData"/>
<wsdl:input>
<mime:content type="text/xml" part="parameters"/>
</wsdl:input>
<wsdl:output>
<mime:content type="text/xml" part="parameters"/>
</wsdl:output>
</wsdl:operation>

最佳答案

如本页所读:

http://www.techdevtips.com/java/java-webservice-client-how-to-remove-jaxbelement

使用带有此代码的数据绑定(bind)文件:

<?xml version="1.0" encoding="UTF-8"?>
<jaxb:bindings
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.0"
xmlns:xjc= "http://java.sun.com/xml/ns/jaxb/xjc" jaxb:extensionBindingPrefixes="xjc">
<jaxb:globalBindings generateElementProperty="false">
<xjc:simple />
</jaxb:globalBindings>
</jaxb:bindings>

并通过填充绑定(bind)属性(或 -b 标志参数,如果您使用可运行的)在您的 wsimport ant 任务中使用它

干杯:)

关于java - 为什么 wsimport 生成的类需要 JAXBElement<ClassName> 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12211120/

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