これは、 JAXB / JAX-WSカスタマイズを使用して実現できます。XSD 型が WSDL に埋め込まれているとします。次に、カスタマイズは次のようになります。
<jaxws:bindings version="2.0"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
wsdlLocation="../wsdl/some.wsdl">
<jaxws:package name="org.company.project.ws" />
<!-- XSD types customization within WSDL -->
<jaxb:bindings node="//xsd:schema">
<jaxb:schemaBindings>
<jaxb:package name="org.company.project.beans" />
</jaxb:schemaBindings>
</jaxb:bindings>
</jaxws:bindings>
上記の構成は、次のプロジェクト ディレクトリ構造を参照しています。
+-- binding
| +-- jaxws-binding.xml
+-- wsdl
| +-- some.wsdl
+-- src
...
プラグインを使用する場合はorg.codehaus.mojo:jaxws-maven-plugin
、指定する必要があります<bindingDirectory>binding</bindingDirectory>
。
XSD が WSDL の外部にある場合は、個別にカスタマイズを指定する必要があります。
+-- binding
| +-- jaxb-binding.xml
| +-- jaxws-binding.xml
+-- wsdl
...
次にjaxb-binding.xml
、次のようになります。
<jaxb:bindings version="1.0"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<jaxb:bindings schemaLocation="my.xsd" node="//xsd:schema">
<jaxb:schemaBindings>
<jaxb:package name="org.company.project.beans" />
</jaxb:schemaBindings>
</jaxb:bindings>
</jaxb:bindings>
- Ant ビルドの場合、異なるパッケージ用に 2 つの jar を生成するだけです。
- 私は個人的に、1 つの Maven プロジェクトから 2 つの JAR アーティファクトを作成する方法を知らないので :) 最も簡単な解決策は、
project-beans
プロジェクトでXSD から JAXB クラスを生成project-ws
し、wsimport の実行後に生成された JAXB クラスをプロジェクトで削除することです (使用できます)。そのためのantプラグイン)。