2016-09-14 10 views
1

У нас есть куча веб-сервисов, которые разработаны контракт первый. В различные файлы WSDL включены общие XML-фрагменты из одного и того же определения схемы XML. Однако результат состоит в том, что один и тот же класс, например Address, создается несколько раз для различных веб-сервисов (wsimport).Контракт на Webservice сначала отменен - ​​обратитесь к Java-классу в WSDL

Можно ли с заключить договор с первым, но сначала определить группу или несколько классов Java, которые передаются в различных файлах WSDL? Это упростит программирование как на переднем, так и на заднем конце.

+0

Мы используем jaxws-maven-plugin. –

ответ

0

Я рекомендую переключиться на cxf-codegen-plugin. Это позволяет больше настраивать процесс генерации кода.

С помощью cxf-codegen-plugin вы можете отображать типы пространств имен в конкретный пакет. Просто укажите общий пакет для ваших общих классов:

<wsdlOption> 
    <wsdl>${basedir}/src/main/resources/service1/Service1.wsdl</wsdl> 
    <extraargs> 
     <extraarg>-p</extraarg> 
     <extraarg>http://yournamespace.com/types=com.namespace.types</extraarg> 
     <extraarg>-p</extraarg> 
     <extraarg>http://yournamespace.com/service1=com.namespace.service1</extraarg> 
    </extraargs> 
</wsdlOption> 
<wsdlOption> 
    <wsdl>${basedir}/src/main/resources/service2/Service2.wsdl</wsdl> 
    <extraargs> 
     <extraarg>-p</extraarg> 
     <extraarg>http://yournamespace.com/types=com.namespace.types</extraarg> 
     <extraarg>-p</extraarg> 
     <extraarg>http://yournamespace.com/service2=com.namespace.service2</extraarg> 
    </extraargs> 
</wsdlOption> 
+0

Спасибо за подсказку. Я также думаю, что cxf-codegen-plugin может быть лучшим решением. Тем не менее, jaxws-maven-plugin также имеет сопоставление пространства имен xml с пакетом Java готовых классов Java. Проблема по-прежнему сохраняется, как использовать существующие классы Java как «входящие элементы» в контракте webservice. –