【发布时间】:2016-10-11 12:48:51
【问题描述】:
我正在使用 Apache CXF 3.0.2 公开在解组期间遇到命名空间问题的服务。当所有命名空间声明都在soapenvelope 级别完成时,当我要解组消息时,它们似乎会被剥离或丢失。例如以下将显示为无效的 xml:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:v1="http://foo.com/v1"
xmlns:v2="http://bar.com/v2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body >
<v1:foo>
<v2:bar>
</v1:foo>
</soapenv:Body>
</soapenv:Envelope>
但是,如果我将声明向下移动到soapbody 或xml 下方,则验证正常:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body xmlns:v2="http://bar.com/v2" xmlns:v1="http://foo.com/v1">
<v1:foo>
<v2:bar>
</v1:foo>
</soapenv:Body>
</soapenv:Envelope>
我一直在尝试编写一个拦截器来操纵传入的请求并将我关心的名称空间声明从标头移动/复制到 Body 标签,但似乎无法在此操作传入的消息方式。有人有什么建议吗?
【问题讨论】:
标签: java xml apache web-services soap