gpt4 book ai didi

java - 让 JAX-WS 生成带有命名空间参数的代码?

转载 作者:太空宇宙 更新时间:2023-11-04 07:25:33 25 4
gpt4 key购买 nike

我有一个 WSDL,并且我已经使用 wsimport 为其生成良好的代码。代码运行。 “hello”操作(不带参数)效果很好。

但现在我正在调用“CreateSomething”操作。我的服务器代码提示请求中没有发送任何参数。但我在我的服务器代码中将其注销,然后我就在那里看到它......

<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:ABCDEFGRequest
xmlns:ns2="http://ray.com:55555/cgi-bin/WebObjects/App.woa/wa/abcsoap">
<AAA>999</AAA>
<BBB>Dept 999</BBB>
<CCC>Dept 999 password</CCC>
<DDD>abcNextTest</DDD>
</ns2:ABCDEFGRequest>
</S:Body>
</S:Envelope>

嘿,我觉得这很好!最近怎么样?当我手动创建请求时,就可以了。

所以,问题是

      <AAA>999</AAA>

应该是

      <ns2:AAA>999</ns2:AAA>

但是我当然不会创建请求。 JAX-WS 生成的代码是。那么,我如何告诉它参数也需要位于命名空间中?这看起来很基本。

包含此操作的 WSDL 片段如下。

<?xml version="1.0" encoding="utf-8" ?>
<wsdl:definitions
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://__HOST__/cgi-bin/WebObjects/__APP__.woa/wa/abcsoap"
targetNamespace="http://__HOST__/cgi-bin/WebObjects/__APP__.woa/wa/abcsoap">

<wsdl:types>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://__HOST__/cgi-bin/WebObjects/__APP__.woa/wa/abcsoap">

<xsd:element name="ABCDEFGRequest">
<xsd:complexType>
<xsd:all>

<xsd:element name="AAA">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:length value="3" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>

<xsd:element name="BBB">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1" />
<xsd:maxLength value="40" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>

<xsd:element name="CCC">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1" />
<xsd:maxLength value="40" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>

<xsd:element name="DDD">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1" />
<xsd:maxLength value="8" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>

</xsd:all>
</xsd:complexType>
</xsd:element>

<xsd:element name="ABCDEFGResponse">
<xsd:complexType>
<xsd:all>
<xsd:element name="AAA">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:length value="3" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:all>
</xsd:complexType>
</xsd:element>

</xsd:schema>
</wsdl:types>

<wsdl:message name="ABCDEFGRequestMessage">
<wsdl:part name="parameters" element="tns:ABCDEFGRequest"/>
</wsdl:message>

<wsdl:message name="ABCDEFGResponseMessage">
<wsdl:part name="parameters" element="tns:ABCDEFGResponse"/>
</wsdl:message>

<wsdl:portType name="LMSPortType">
<wsdl:operation name="ABCDEFG">
<wsdl:input name="ABCDEFGRequestMessage" message="tns:ABCDEFGRequestMessage"/>
<wsdl:output name="ABCDEFGResponseMessage" message="tns:ABCDEFGResponseMessage"/>
</wsdl:operation>
</wsdl:portType>

<wsdl:binding name="LMSBinding" type="tns:LMSPortType">

<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

<wsdl:operation name="ABCDEFG">
<soap:operation soapAction="ABCDEFG"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>

</wsdl:binding>

<wsdl:service name="LMSService">

<wsdl:port name="LMSPort" binding="tns:LMSBinding">
<soap:address location="http://__HOST__/cgi-bin/WebObjects/__APP__.woa/wa/abcsoap"/>
</wsdl:port>

</wsdl:service>

</wsdl:definitions>

最佳答案

哇。 Apache 非常擅长发布大量文档。很多。所以,我在这里,眼睛流血,读完一堆 JAX-WS 字母汤,答案非常简单。

我通过查看 JAX-WS 的源代码发现了这一点。真的。在那里我发现:

svn co http://svn.apache.org/repos/asf/axis/axis2/java/core/trunk/
modules/samples/wsdl/perf.wsdl

所以我发现我需要转到 WSDL 的顶部并进行更改:

    <xsd:schema
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://__HOST__/cgi-bin/WebObjects/__APP__.woa/wa/abcsoap">

至:

    <xsd:schema
elementFormDefault="qualified"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://__HOST__/cgi-bin/WebObjects/__APP__.woa/wa/abcsoap">

仅此而已。

哇。考虑到这种行为,这可能是默认的,是吗?哦,好吧。

关于java - 让 JAX-WS 生成带有命名空间参数的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18607271/

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