Я генерирую классы 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>
Попробуйте также добавить '-xjc-XautoInheritance' для активации плагина. – lexicore
Смотрите также это для использования CXF: http://confluence.highsource.org/display/J2B/Using+JAXB2+Basics+Plugins+with+CXF – lexicore
Тестовый проект: https://svn.java.net/svn/jaxb2 -commons ~ svn/basics/trunk/tests/issues/ – lexicore