JAX-WS客户端Soap消息在嵌套节点上插入空白命名空间

时间:2016-02-12 18:14:59

标签: web-services soap wsdl jax-ws java-ee-6

我遇到了JAX-WS(Java 1.6)如何生成要发送到远程服务器的soap消息的问题。我使用WSDL Import生成所有必需的类,但注意到当SOAP消息发送到服务器时,它会插入一个xmlns =""和xmlns:ns2 =" http:// somexmlnamespace"在嵌套节点上,如:

<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
   <S:Body xmlns="http://somexmlnamespace">
      <ParentNode xmlns="http://somexmlnamespace">
         <ChildNode xmlns="" xmlns:ns2="http://somexmlnamespace">
         </ChildNode>
      </ParentNode>
   </S:Body>
</S:Envelope>

空白xmlns =&#34;&#34;导致我尝试连接的服务出现问题。如果我手动发布没有它的消息:

<ChildNode xmlns:ns2="http://somexmlnamespace">
         </ChildNode>

肥皂消息响应是我所期望的。我怎么会让Java不发送xmlns =&#34;&#34;? XML注释中生成的类是否有修改,或者消息处理程序是否会修复此问题?

1 个答案:

答案 0 :(得分:0)

在parentNode类中,将以下内容添加到getChildNode()方法: - @ XmlElement(namespace =“http:// somexmlnamespace”)

假设ChildNode位于名称空间http://somexmlnamespace中,原因是在ParentNode中指定了xmlns。

我假设是JAXB。如果这没有回答,因为@Koitoer已经说过提供生成的代码。