Web services 使用Jboss 4.2.3ga没有名称空间前缀的JAXWS问题
我使用@WebServiceannotation将java服务发布为JAXWS Web服务。该服务在Jboss应用服务器4.2.3ga上部署良好(应用服务器提供Jax ws实现) 当Soap消息如下所示时,服务运行良好:Web services 使用Jboss 4.2.3ga没有名称空间前缀的JAXWS问题,web-services,jboss,jax-ws,xml-namespaces,Web Services,Jboss,Jax Ws,Xml Namespaces,我使用@WebServiceannotation将java服务发布为JAXWS Web服务。该服务在Jboss应用服务器4.2.3ga上部署良好(应用服务器提供Jax ws实现) 当Soap消息如下所示时,服务运行良好: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pref="mynamespace"> <soapenv:Header/> &
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pref="mynamespace">
<soapenv:Header/>
<soapenv:Body>
<pref:mymethod>
<arg0>value</arg0>
</pref:mymethod>
</soapenv:Body>
</soapenv:Envelope>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="mynamespace">
<soapenv:Header/>
<soapenv:Body>
<mymethod>
<arg0>value</arg0>
</mymethod>
</soapenv:Body>
</soapenv:Envelope>
<arg0 xmlns="">
价值
当Soap消息如下所示时失败:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pref="mynamespace">
<soapenv:Header/>
<soapenv:Body>
<pref:mymethod>
<arg0>value</arg0>
</pref:mymethod>
</soapenv:Body>
</soapenv:Envelope>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="mynamespace">
<soapenv:Header/>
<soapenv:Body>
<mymethod>
<arg0>value</arg0>
</mymethod>
</soapenv:Body>
</soapenv:Envelope>
<arg0 xmlns="">
价值
所谓失败,是指调用了“mymethod”,但arg0为null
有人知道这是JAX-WSAPI的预期行为还是一个bug吗?我找不到一个或另一个的参考
是否有人在使用另一个JAX-WS堆栈时遇到了相同的问题(或成功)?在工作代码中没有默认名称空间,
使用前缀绑定到mynamespace
。
由于
元素没有前缀,因此它位于空命名空间中
在失败代码中,mynamespace
被设置为默认名称空间。因为
和
没有任何前缀,所以它们都将mynamespace
作为其命名空间URI
不允许将空命名空间URI绑定到任何前缀。因此,您需要继续在
中使用名称空间前缀,或者需要覆盖
中的默认名称空间,如下所示:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pref="mynamespace">
<soapenv:Header/>
<soapenv:Body>
<pref:mymethod>
<arg0>value</arg0>
</pref:mymethod>
</soapenv:Body>
</soapenv:Envelope>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="mynamespace">
<soapenv:Header/>
<soapenv:Body>
<mymethod>
<arg0>value</arg0>
</mymethod>
</soapenv:Body>
</soapenv:Envelope>
<arg0 xmlns="">
请注意,这会将
的所有未固定子元素设置为空名称空间,除非您再次重写默认名称空间