【发布时间】:2012-12-25 17:01:41
【问题描述】:
我在 WAS7.0 应用服务器下使用 JAX-WS 2.1(使用 JAXB 2.1)。我已经编写了一个客户端代码,下面是我的请求 xml 中的 sn-p。
<additionalCriteria>
<ns5:keyword xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<ns5:maxResultsToReturn>10</ns5:maxResultsToReturn>
<ns5:nextResultBlockKey xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<ns5:scope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<ns5:sortBy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
<ns5:sortOrder xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
</additionalCriteria>
如您所见,xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 属性被添加到每个元素中。我不想在我的请求中这样做。任何人都可以建议,因为它阻碍了我的项目交付?
【问题讨论】:
-
你为什么在乎?您的所有代码都知道,此 XML 可能是楔形文字。您调用客户端,然后服务器被调用数据。
-
我同意,但人们不接受这一点,他们希望它在信封级别声明。知道如何解决这个问题吗?
-
告诉“人们”他们错了。 JAX-WS 需要 xsi:nil 的命名空间,并且无法预测其中一个是否会出现在消息深处的某个地方。
-
好的,谢谢您的回复。顺便说一句,我们可以管理这个 nsmaespace -
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"在信封级别而不是在元素/正文级别声明吗? -
JAX-WS 拥有信封。 JAX-B 拥有内部。我不记得他们是否交流过。如果您将该名称空间添加到信封中,它可能不会阻止 JAX-B 再次将其添加到正文中。
标签: java web-services jax-ws