2014-09-24 1 views
1

Я генерирую классы java от soap webservices wsdl.Как использовать JAXB autoInheritance для генерируемых классов из WSDL?

Запросы не имеют общего интерфейса, но я бы хотел, чтобы они реализовали один или расширили общий класс.

Поэтому я пытаюсь использовать xcj-plugin. Заявление

<extraarg>-xjc-XautoInheritance-xmlRootElementsImplement=com.path.to.BaseInterface</extraarg> 

должен заботиться об этом, и пусть всех @XmlRootElement аннотированных классах автоматически осуществлять определенный BaseInterface.

Но сгенерированные классы без этого. Ни один класс не реализует этот интерфейс. Зачем? Что может быть неправильным в следующей конфигурации?

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.cxf</groupId> 
      <artifactId>cxf-codegen-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>generate-sources</id> 
        <phase>generate-sources</phase> 
        <configuration> 
         <wsdlOptions> 
           <extraargs> 
            <extraarg>-xjc-XautoInheritance-xmlRootElementsExtend=com.path.to.BaseClass</extraarg> 
           <extraarg>-xjc-XautoInheritance-xmlRootElementsImplement=com.path.to.BaseInterface</extraarg> 
           <extraarg>-fe</extraarg> 
           <extraarg>cxf</extraarg> 
           <extraarg>-mark-generated</extraarg> 
           </extraargs> 
          </wsdlOption> 
         </wsdlOptions> 
        </configuration> 
        <goals> 
         <goal>wsdl2java</goal> 
        </goals> 
       </execution> 
      </executions> 
      <dependencies> 
       <dependency> 
        <groupId>com.sun.xml.bind</groupId> 
        <artifactId>jaxb-xjc</artifactId> 
        <version>2.2.10-b140310.1920</version> 
       </dependency> 
        <dependency> 
         <groupId>org.jvnet.jaxb2_commons</groupId> 
         <artifactId>jaxb2-basics</artifactId> 
          <version>0.8.2</version> 
        </dependency> 
       <dependency> 
        <groupId>org.jvnet.jaxb2_commons</groupId> 
        <artifactId>jaxb2-basics-runtime</artifactId> 
        <version>0.8.2</version> 
       </dependency> 
       <dependency> 
        <groupId>org.jvnet.jaxb2_commons</groupId> 
        <artifactId>jaxb2-basics-jaxb-xjc</artifactId> 
        <version>2.2.4-1</version> 
       </dependency> 
       <dependency> 
        <groupId>org.jvnet.jaxb2_commons</groupId> 
        <artifactId>jaxb-xjc</artifactId> 
        <version>2.1.10.1</version> 
       </dependency> 
      </dependencies> 
     </plugin> 
    </plugins> 
</build> 
+1

Попробуйте также добавить '-xjc-XautoInheritance' для активации плагина. – lexicore

+0

Смотрите также это для использования CXF: http://confluence.highsource.org/display/J2B/Using+JAXB2+Basics+Plugins+with+CXF – lexicore

+0

Тестовый проект: https://svn.java.net/svn/jaxb2 -commons ~ svn/basics/trunk/tests/issues/ – lexicore

ответ

2

Пожалуйста, добавьте -xjc-XautoInheritance, чтобы активировать плагин.

См the following page для использования CXF основ JAXB2 плагинов:

<plugin> 
    <groupId>org.apache.cxf</groupId> 
    <artifactId>cxf-codegen-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>generate-sources</id> 
      <phase>generate-sources</phase> 
      <goals> 
       <goal>wsdl2java</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <wsdlOptions> 
      <wsdlOption> 
       <wsdl>${basedir}/src/main/wsdl/CustomerService.wsdl</wsdl> 
       <bindingFiles> 
        <bindingFile>${basedir}/src/main/wsdl/binding.xml</bindingFile> 
        <bindingFile>${basedir}/src/main/wsdl/binding.xjb</bindingFile> 
       </bindingFiles> 
       <extraargs> 
        <extraarg>-xjc-XhashCode</extraarg> 
        <extraarg>-xjc-Xequals</extraarg> 
       </extraargs> 
      </wsdlOption> 
     </wsdlOptions> 
    </configuration> 
    <dependencies> 
     <dependency> 
      <groupId>org.jvnet.jaxb2_commons</groupId> 
      <artifactId>jaxb2-basics</artifactId> 
      <version><!-- version --></version> 
     </dependency> 
    </dependencies> 
</plugin> 

Отказ от ответственности: Я автор Основы JAXB2 плагинов.