2016-11-08 2 views
0

Использование 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 с зависимостью кросс-схемы, используя этот плагин?

ответ

1

Это:

неожиданного элемент (URI: "http://...payments", местный: "inputTemplate"). Ожидаемые элементы < {} inputTemplate>

На самом деле указывает не на проблемы с зависимостями схемы, а к задаче с пространствами имен. Элемент inputTemplate известен, но он ожидается в пространстве имен по умолчанию. Возможно, неправильно elementFormDefault или что-то в этом роде.

Чтобы ответить на ваш вопрос, зависимости между схемами лучше всего обрабатывать, если вы скомпилируете свои схемы отдельно (отдельные модули Maven) и включите зависимости как эпизоды.

https://github.com/highsource/maven-jaxb2-plugin/wiki/Using-Episodes

Смежные вопросы