CXF: Как изменить пакет импортированной WSDL XML-схемы с помощью внешнего файла привязки JAXB? - PullRequest
5 голосов
/ 18 января 2011

У меня есть файл WSDL, который импортирует несколько XML-схем, каждая из которых имеет одно и то же пространство имен (назовем его A). Я пытаюсь использовать файл внешней привязки JAXB для изменения сгенерированного имени пакета (скажем, B) для этих схем. Вот пример:

У меня есть файл POM, содержащий конфигурацию для генерации кода из WSDL (с использованием плагина cxf-codegen-plugin).

Мой WSDL:

<definitions ...>
    <types>
         <xsd:schema elementFormDefault="qualified" targetNamespace="C">
             <xsd:import namespace="A" schemaLocation="SCHEMA_REF"/>
             <xsd:import namespace="A" schemaLocation="SCHEMA_REF"/>
             ...
         </xsd:schema>
    </types>
    ...
</definitions>

Вот мой фактический файл привязки, который вообще не работает, кажется, он вообще не применяется (нет сообщения об ошибке ...).

<jaxws:bindings wsdlLocation="WSDL_LOCATION" xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" jaxb:version="2.0">
    <jaxws:bindings node="wsdl:definitions/wsdl:types/xs:schema[@targetNamespace='C']/xs:import[@namespace='A']">.
        <jaxb:schemaBindings>
            <jaxb:package name="B" />
        </jaxb:schemaBindings>
    </jaxws:bindings>
</jaxws:bindings>

Поскольку у меня нет сообщений об ошибках в генерации, возможно, это потому, что выражение XPath, используемое для доступа к импортированной схеме, не подходит ...

Ребята, вы понимаете? Я застрял здесь ...

Заранее спасибо за ваш вклад!

Ответы [ 2 ]

1 голос
/ 19 сентября 2013

Попробуйте записать свои привязки, как если бы импорт схемы был объединен с документом WSDL, напрямую ссылаясь на его пространство имен:

<jaxws:bindings wsdlLocation="WSDL_LOCATION" 
        xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" 
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
        jaxb:version="2.0">
    <jaxws:bindings 
node="wsdl:definitions/wsdl:types/xs:schema[@targetNamespace='A']">
        <jaxb:schemaBindings>
            <jaxb:package name="B" />
        </jaxb:schemaBindings>
    </jaxws:bindings>
</jaxws:bindings>

Это сработало для меня. Престижность этой записи , которая демонстрирует работу с импортированной схемой.

0 голосов
/ 14 июня 2011

Интересно, у вас нет ответов :) К сожалению, невозможно заархивировать то, что вы хотите.Единственный способ - определить отдельные файлы привязки для каждого имеющегося файла схемы, который будет работать нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...