maven-cxf-codegen-plugin, использующий привязку Jaxb для добавления наследования для всех сгенерированных классов
Я использую cxf-codegen-плагин Apache CXF, чтобы превратить wsdl в объекты Java. Я указал файл привязки, чтобы добавить дополнительную обработку jaxb. Я хочу, чтобы все эти файлы наследовали от интерфейса (или расширяли абстрактный класс).
Моя проблема в том, что хотя я могу заставить это работать с одним сгенерированным файлом, используя
<jaxb:bindings node="xsd:complexType[@name='sampleObj'] ">
<inheritance:implements>example.Dao</inheritance:implements>
</jaxb:bindings>
который заставит sampleObj реализовать пример. Дао. Я не знаю, как заставить это обрабатывать все мои сложные типы (сгенерированные классы). Без повторения вышеуказанного связывания для каждого класса (>100)
Я старался,
<jaxb:bindings multiple="true" node="//xsd:compexType[@name='*'] ">
Но это не работает.
Вот мой плагин Maven, если он помогает:
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>${cxf.version}</version>
<executions>
<execution>
<id>generate-resources</id>
<phase>process-resources</phase>
<configuration>
<sourceRoot>${project.build.directory}/generated/</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>${wsdl_location}</wsdl>
<wsdlLocation>classpath:wsdl.wsdl</wsdlLocation>
<!--<wsdlLocation>classpath:wsdl.wsdl</wsdlLocation>-->
<extraargs>
<extraarg>-autoNameResolution</extraarg>
<extraarg>-xjc-Xfluent-api</extraarg>
<extraarg>-xjc-Xbg</extraarg>
<extraarg>-verbose</extraarg>
<extraargs>-validate</extraargs>
<extraargs>-mark-generated</extraargs>
<extraargs>-xjc-Xinheritance</extraargs>
<extraarg>-p</extraarg>
<extraarg>com.example</extraarg>
</extraargs>
<bindingFiles>
<bindingFile>${project.build.directory}\classes\jax-ws_binding.xjb</bindingFile>
</bindingFiles>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-fluent-api</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics</artifactId>
<version>0.6.5</version>
</dependency>
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-annotate</artifactId>
<version>0.6.5</version>
</dependency>
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-runtime</artifactId>
<version>0.6.5</version>
</dependency>
<dependency>
<groupId>org.apache.cxf.xjcplugins</groupId>
<artifactId>cxf-xjc-boolean</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-api</artifactId>
<version>${cxf.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
2 ответа
Ааа, наконец-то нашел: add multiple="true"
к bindings
тег:
<jaxb:bindings schemaLocation="../../../../contracts/src/main/resources/wsdl/ifx24.xsd">
<jaxb:bindings node="xsd:complexType[contains(@name, 'Rq_Type')]" multiple="true">
<inheritance:implements>hu.eir.ifx.IfxExchange</inheritance:implements>
</jaxb:bindings>
</jaxb:bindings>