CXF响应具有不合格的命名空间

时间:2012-02-16 20:02:30

标签: soap jaxb cxf xml-namespaces

我使用CXF 2.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>

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

1 个答案:

答案 0 :(得分:3)

由于CXF使用JAXB来处理XML序列化,因此应使用标准JAXB方法来控制命名空间前缀的分配方式。也就是说,你在适当放置的package-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;