Как использовать автоматическое наследование JAXB для сгенерированных классов из WSDL?

1

Я генерирую классы Java из soap webservices 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 чтобы активировать плагин.
  • 0
    Смотрите также это для использования CXF: confluence.highsource.org/display/J2B/…
Показать ещё 3 комментария
Теги:
jaxb
cxf
xjc
cxf-xjc-plugin

1 ответ

2
Лучший ответ

Добавьте -xjc-XautoInheritance чтобы активировать плагин.

См. Следующую страницу для использования CXF плагинов JAXB2 Basics:

<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 Basics.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню