我使用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类,它声明要限定的元素名称空间。 还有什么我需要做的吗?
答案 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;