Генерация исключений Java из XSD/привязка исключений с помощью JAXB2

Для веб-сервисов мы обычно генерируем java-бины с помощью maven-jaxb2-plugin и используем маршаллинг JAXB2 в Spring. Мне интересно, как лучше всего обрабатывать (SOAP-) ошибки, которые объявлены в WSDL/XSD. В приложении я хотел бы использовать исключения Java, которые сортируются по ошибкам. Это возможно? Я не нашел способа генерировать исключения с генерацией исходного кода плагина maven-jaxb2. Спасибо!

Обновление: я хотел бы использовать spring-ws. Но я думаю, что основная проблема заключается в том, как генерировать исключения Java с помощью генератора исходного кода jaxb2.


person Hans-Peter Störr    schedule 15.01.2010    source источник


Ответы (2)


XFire (теперь CXF) позволяет привязывать исключения SOAP, объявленные в WSDL, к конкретному исключению Java, как описано здесь. Эти исключения Java создаются вручную, а не генерируются через JAXB. Я не знаю, есть ли эквивалент в Spring-WS.

person Jherico    schedule 15.01.2010

Плагин Jaxb2 генерирует bean-компоненты только из XSD. Вы можете использовать jaxws-maven-plugin вместо maven-jaxb2-plugin.

Попробуйте использовать это:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxws-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>generate-from-wsdl<
            <goals>
                <goal>wsimport</
            </goals>
        </execution>
    </executions>

    <configuration>
        <wsdlDirectory>src/main/resources/wsdl/</wsdlDirectory>
        <keep>true</keep>
        <sourceDestDir>target/generated-sources/wsimport</sourceDestDir>
    </configuration>
</plugin>

Просто вызовите команду mvn clean install, вы найдете сгенерированные ресурсы в target/generated-sources/wsimport для двух пакетов:

  • типы, сгенерированные Java-бинами, такие же, как из jaxb
  • wsdl — классы, исключения, интерфейсы, сгенерированные из wsdl
person OldSoldier    schedule 14.02.2014