詳細:
- Maven - jaxws-maven-plugin バージョン 2.3 を使用した 3.3.1 と、ここに貼り付けられない wsdlUrl の目標 wsimport。
- Java 1.7
maven pom コンテンツの例:
<plugin>
<groupId>org.jvnet.jax-ws-commons</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<id>wsdla-exec-1</id>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<packageName>com.yourcompany.package</packageName>
<target>2.1</target>
<verbose>true</verbose>
<!-- Fix naming resolution due to ChangeOrderResponse duplicate stanza -->
<args>
<arg>-B-XautoNameResolution</arg>
</args>
<wsdlDirectory>src/main/resources</wsdlDirectory>
<wsdlFiles>
<wsdlFiles>service1.wsdl</wsdlFiles>
</wsdlFiles>
<wsdlLocation>/*</wsdlLocation>
<sourceDestDir>src/main/java</sourceDestDir>
</configuration>
</execution>
<execution>
<id>wsdla-exec-2</id>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<packageName>com.yourcompany.package</packageName>
<target>2.1</target>
<verbose>true</verbose>
<!-- Fix naming resolution due to ChangeOrderResponse duplicate stanza -->
<args>
<arg>-B-XautoNameResolution</arg>
</args>
<wsdlDirectory>src/main/resources</wsdlDirectory>
<wsdlFiles>
<wsdlFile>service2.wsdl</wsdlFile>
</wsdlFiles>
<wsdlLocation>/*</wsdlLocation>
<sourceDestDir>src/main/java</sourceDestDir>
</configuration>
</execution>
</executions>
</plugin>
説明:
私はかなり長い間、Mule 内で wsdl からクライアント コードを生成してきました。これは常にかなり単純明快で生産的でしたが、ここで正しい方向へのポインターを取得できる障害にぶつかりました。
基本的に、wsdl から生成されたコードには、コンテナー クラスと同じ名前のネストされたクラスがあり、これにより、この wsdl を使用しているプロジェクトで赤色が生成されます。
私が知っていること:
コードを手動で viola に変更することも、wsimport を変更して静的ファイル (URL からコピー - すべての xsd を含む) を使用し、それらのファイルを変更することもできます。しかし、どちらも間違っているようです!
コード生成のプロセスを操作する方法はありますか、それともベンダーに変更を依頼する必要がありますか? あなたの考えは何ですか?
どうもありがとうございました。ご意見をお寄せいただきありがとうございます。