2016-11-08 9 views
0

maven-jaxb2-pluginを使用して、相互に関連する2つのWSDLスキーマのJAXBクラスを生成します。Maven JAXB 2プラグイン - クロススキームの依存関係を使用するようにセットアップする方法

クラスは次のように生成される:

com - accounts 
    |- payments 
    |- other 

達人-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クラスには入れ子のelem他のpaymentsスキームから来た、上記で指定されたクラスのクラス。それはしかしなぜ起こるか

unexpected element (uri:"http://...payments", local:"inputTemplate"). 
Expected elements are <{}inputTemplate> 

は知ってはいけない、指定された各クラスがあり、名前空間を:私は支払いの inputTemplate子としてを持って accountsサービスの対象に照会するときに、マーシャラーはこのように例外をスローします。

このプラグインを使用してクロススキーム依存関係を持つJAXBクラスを動作させるにはどうすればいいですか?

答えて

1

この:

予想外の要素(URI: "http://...payments"、ローカル: "inputTemplate")。 期待要素は< {}はinputTemplate>

が実際スキーマ依存関係ではなく、名前空間での問題に問題がない点です。 inputTemplate要素は知られていますが、デフォルトの名前空間で期待されています。おそらく間違ってelementFormDefaultなどです。

あなたの質問に答えるために、スキーマ間の依存関係は別々に(別のMavenモジュールを)コンパイルし、インクルード依存関係をエピソードとしてコンパイルするのが最適です。

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

関連する問題