Для веб-сервисов мы обычно генерируем java-бины с помощью maven-jaxb2-plugin и используем маршаллинг JAXB2 в Spring. Мне интересно, как лучше всего обрабатывать (SOAP-) ошибки, которые объявлены в WSDL/XSD. В приложении я хотел бы использовать исключения Java, которые сортируются по ошибкам. Это возможно? Я не нашел способа генерировать исключения с генерацией исходного кода плагина maven-jaxb2. Спасибо!
Обновление: я хотел бы использовать spring-ws. Но я думаю, что основная проблема заключается в том, как генерировать исключения Java с помощью генератора исходного кода jaxb2.
Ответ 1 · Jherico
XFire (теперь CXF) позволяет привязывать исключения SOAP, объявленные в WSDL, к конкретному исключению Java, как описано здесь. Эти исключения Java создаются вручную, а не генерируются через JAXB. Я не знаю, есть ли эквивалент в Spring-WS.
Ответ 2 · OldSoldier
Плагин 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