Web services 使用Jboss 4.2.3ga没有名称空间前缀的JAXWS问题

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/> &

我使用@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: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="">

请注意,这会将
的所有未固定子元素设置为空名称空间,除非您再次重写默认名称空间