Ответ CXF имеет неквалифицированное пространство имен - PullRequest
2 голосов
/ 17 февраля 2012

Я использую 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>

У меня есть класс информации о пакете, который объявляет пространство имен элемента квалифицированным. Есть ли что-то еще, что мне нужно сделать?

1 Ответ

3 голосов
/ 17 февраля 2012

Поскольку 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;
...