Soap CXF响应具有非限定命名空间

Soap CXF响应具有非限定命名空间,soap,jaxb,cxf,xml-namespaces,Soap,Jaxb,Cxf,Xml Namespaces,我使用CXF2.3.0托管服务,但服务的响应是 如下所示 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <responseElement xmlns="http://xxx/yyyy.wsdl/types/"> <result> 但我们需要的是 <env:Envelope x

我使用CXF2.3.0托管服务,但服务的响应是 如下所示

 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
     <responseElement xmlns="http://xxx/yyyy.wsdl/types/">
             <result>

但我们需要的是

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns0="http://xxx/yyyy.wsdl/types/">
   <env:Body>
      <ns0:responseElement>
         <ns0:result>

我有一个包信息类,它声明要限定的元素名称空间。
还有什么我需要做的吗?

因为CXF使用JAXB处理XML序列化,所以应该使用标准JAXB方法来控制名称空间前缀的分配方式。也就是说,在适当放置的
包info.java中使用类似的内容:

@javax.xml.bind.annotation.XmlSchema(
    xmlns = { 
        @javax.xml.bind.annotation.XmlNs(
            prefix = "ns0", 
            namespaceURI="http://xxx/yyyy.wsdl/types/")
    }
)
package your.pkg.name;

两者在语义上完全相同。你不应该关心名称空间在哪里声明,只要它们是一致的和正确的,上面两个都是。是的,我理解…但是有办法做到吗?我正在重新创建服务,并且要求完全相同。您可能会发现以下文章很有帮助:而且,您可能会得到不同的
xmlns
属性位置;在这方面,不同的XML序列化程序往往会有所不同,而且很难改变它们的行为(毕竟这并不重要……),Solaris操作系统是否存在任何问题?因为它不能单独使用SUn solaris。所有其他设置都是相同的。。。它可以在Linux设备中工作,但不能在Sun Solaris中工作,谢谢!!!只是一个非常小的注意事项:在最初生成的wsdl2java中,我已经有了XmlSchema 2元素:namespace和elementFormDefault,所以我还需要保留它们