Хотя вы можете безопасно генерировать WSDL автоматически, обычно имеет смысл вручную кодировать XSD, на который ссылается WSDL, что дает вам все богатство выражения, которое не может создать схема, сгенерированная из классов JAXB, а также обеспечивает схема не меняется, когда вы этого не хотите. (Эта практика называется контракт-первый , тогда как начало с классов называется код-первым.)
Когда вы выполняете сначала контракт, вы можете сгенерировать свои классы JAXB из XSD автоматически как часть процесса сборки, следя за тем, чтобы они всегда были синхронизированы. Вы можете настроить сгенерированные классы, используя XJB файлы.
Если вы используете Maven, генерация классов может выглядеть следующим образом:
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.7.5</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<schemaDirectory>src/main/resources/wsdl</schemaDirectory>
<schemaIncludes>
<include>*.xsd</include>
</schemaIncludes>
<verbose>true</verbose>
<extension>true</extension>
</configuration>
</plugin>
Конечно, вы также можете использовать свои классы, закодированные вручную, с определением схемы, закодированным вручную (указав маршаллеру, где его найти). Я не думаю, что вы можете повлиять на поколение WSDL другими способами.