Java Soap主体、命名空间问题

Java Soap主体、命名空间问题,java,jax-ws,geronimo,Java,Jax Ws,Geronimo,我在ApacheGeronimo2.1.3上有一个web服务应用程序 我使用JAX-WS,注释POJO,使用SOAP1.1。(使用Sun JDK 1.5) 各种客户机使用web服务都很顺利 一个新客户端不工作。在工作客户端中,只有soapenv:Body下的子元素具有名称空间声明,而子元素没有名称空间声明。在新客户机中,soapenv:Body的所有子代,包括子代,都有名称空间声明 从本质上讲,这是可行的: <soapenv:Body> <ns1:Echo> <

我在ApacheGeronimo2.1.3上有一个web服务应用程序

我使用JAX-WS,注释POJO,使用SOAP1.1。(使用Sun JDK 1.5)

各种客户机使用web服务都很顺利

一个新客户端不工作。在工作客户端中,只有soapenv:Body下的子元素具有名称空间声明,而子元素没有名称空间声明。在新客户机中,soapenv:Body的所有子代,包括子代,都有名称空间声明

从本质上讲,这是可行的:

<soapenv:Body>
<ns1:Echo>
  <Message>Hello world</Message>
...

你好,世界
...
但这并不是:


你好,世界
...
登录应用程序会显示消息为空,而不是“Hello world”

这个“坏”的请求行吗?看起来它符合WS-I基本配置文件


客户端程序无法更改。有没有一种方法可以让我重写一些东西,让这个请求的两个版本都能工作?

Message
ns1:Message
是不同的类型,就像虚构的java类
Message
ns1.Message
一样。服务器需要一个在默认命名空间中声明的
消息
元素(应该有一个
xmlns=“”
),但它得到一个
,并忽略它


如果无法强制客户端发送有效的xml soap消息(根据wsdl),则可以尝试更改服务器代码,使其接受
元素以及
元素作为
子元素。您必须为
ns1
命名空间中的元素声明类型,并将
choice
元素添加到
声明中。

事实上,@WebParam注释具有标识命名空间的选项,目前我们没有设置它,因此,新客户端将参数分配给与函数相同的命名空间是错误的。谢谢
<ns1:Echo>
  <ns1:Message>Hello world</ns1:Message>
...