我想使用JaxWS调用外部SOAP Web服务。 JaxWS以
的形式发送请求<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<messageRootElement xmlns="some.ns">
<sampleChild>Content</sampleChild>
</messageRootElement>
</soap:Body>
</soap:Envelope>
在SoapUI中调用模拟服务设置正常。据称,实际的外部Web服务无法使用该格式(我无法使用外部Web服务进行开发)。
外部Web服务似乎与表单
的请求一起使用<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sns="some.ns">
<soap:Body>
<sns:messageRootElement>
<sns:sampleChild>Content</sns:sampleChild>
</sns:messageRootElement>
</soap:Body>
</soap:Envelope>
这也是SoapUI如何从有问题的WSDL生成样本请求的。
我的问题是:如何告诉JaxWS以后一种形式发送请求?我认为,根据某些标准,两者都是有效的,但我没有丝毫的线索,外部Web服务所基于的技术,以及它与所涉及的标准的一致性。
向我解释说,不可能以这种方式改变JaxWS行为(如果是这种情况),也是一个有用的答案。
答案 0 :(得分:1)
您需要修改 package-info.java 文件,该文件是作为Web服务调用所需实体的一部分生成的。修改文件如下:
@javax.xml.bind.annotation.XmlSchema(
namespace = "some.ns",
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED,
xmlns = {
@javax.xml.bind.annotation.XmlNs(
prefix = "sns",
namespaceURI = "some.ns")
})
package some.ns;