当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>
当Soap消息看起来像这样时失败了:
<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>
失败我的意思是“mymethod”被调用,但是arg0是null.
有人知道这是JAX-WS API或BUG的预期行为吗?我没有找到任何一个或另一个的参考.
有没有人使用另一个JAX-WS堆栈遇到同样的问题(或成功)?
解决方法 在工作代码中没有默认命名空间和< mymethod>绑定到带有前缀的mynamespace.因为< arg0> element没有前缀,它在null命名空间中.
在失败的代码中,mynamespace被设置为默认命名空间.因为< mymethod>和< arg0>没有任何前缀,它们都有mynamespace作为其名称空间URI.
不允许将空名称空间URI绑定到任何前缀.因此,您需要继续在< mymethod>中使用名称空间前缀.或者您需要覆盖< arg0>中的默认命名空间像这样:
<arg0 xmlns="">
请注意,这将设置< arg0>的所有未加前缀的子元素.除非您再次覆盖默认命名空间,否则返回null.
总结以上是内存溢出为你收集整理的web-services – 使用Jboss 4.2.3ga的没有名称空间前缀的JAXWS问题全部内容,希望文章能够帮你解决web-services – 使用Jboss 4.2.3ga的没有名称空间前缀的JAXWS问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)