Использование maven-jaxb2-plugin
для генерации классов JAXB для двух схем WSDL, связанных друг с другом.Maven JAXB 2 Plugin - как настроить использование зависимостей кросс-схем
Классы генерироваться следующим образом:
com - accounts
|- payments
|- other
Maven-jaxb2-плагин устанавливается следующим образом:
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.13.1</version>
<executions>
<execution>
<id>unipayments</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<schemaLanguage>WSDL</schemaLanguage>
<args>
<arg>-npa</arg>
</args>
<schemas>
<schema>
<url>http://...accounts?wsdl</url>
</schema>
</schemas>
</configuration>
</execution>
<execution>
<id>accounts</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<schemaLanguage>WSDL</schemaLanguage>
<args>
<arg>-npa</arg>
</args>
<schemas>
<schema>
<url>http://...payments?wsdl</url>
</schema>
</schemas>
</configuration>
</execution>
</executions>
</plugin>
В аннотации к одной из сгенерированных классов (почти то же самое в любом месте) :
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "inputTemplate", namespace = "http://...payments", propOrder = {})
public class InputTemplate {...}
Этот вопрос SOAP accounts
классов JAXB имеют вложенный эль в указанном выше классе, который исходил из другой схемы payments
. Таким образом, ИАС бросает исключение, как это, когда я запрос к объекту accounts
сервиса, который имеет платежа в inputTemplate
, как ребенок:
unexpected element (uri:"http://...payments", local:"inputTemplate").
Expected elements are <{}inputTemplate>
Не знаю, почему это происходит, хотя, каждый класс имеет пространство имен указано.
Итак, как использовать классы JAXB с зависимостью кросс-схемы, используя этот плагин?