44.2. cxf-codegen-plugin
概要
WSDL ドキュメントから JAX-WS 準拠の Java コードを生成します
概要
基本例
以下の POM の抜粋は、myService.wsdl
WSDL ファイルを処理する Maven cxf-codegen-plugin
の設定方法の簡単な例を示しています。
<plugin> <groupId>org.apache.cxf</groupId> <artifactId>cxf-codegen-plugin</artifactId> <version>3.2.7.fuse-740026-redhat-00001</version> <executions> <execution> <id>generate-sources</id> <phase>generate-sources</phase> <configuration> <sourceRoot>target/generated/src/main/java</sourceRoot> <wsdlOptions> <wsdlOption> <wsdl>src/main/resources/wsdl/myService.wsdl</wsdl> </wsdlOption> </wsdlOptions> </configuration> <goals> <goal>wsdl2java</goal> </goals> </execution> </executions> </plugin>
基本の設定設定
前の例では、次の設定をカスタマイズできます
configuration/sourceRoot
-
生成された Java ファイルが保存されるディレクトリーを指定します。デフォルトは
target/generated-sources/cxf
です。 configuration/wsdlOptions/wsdlOption/wsdl
- WSDL ファイルの場所を指定します。
説明
wsdl2java
タスクは WSDL ドキュメントを取得し、サービスを実装する完全なアノテーションが付けられた Java コードを生成します。WSDL ドキュメントには有効な portType
要素が必要ですが、binding
要素または service
要素を含める必要はありません。オプションの引数を使用して、生成されたコードをカスタマイズできます。
WSDL オプション
プラグインを設定するには、1 つ以上の wsdlOptions
要素が必要です。wsdlOptions
要素の wsdl
子要素が必要で、プラグインによって処理される WSDL ドキュメントを指定します。wsdl
要素に加えて、wsdlOptions
要素は WSDL ドキュメントの処理方法をカスタマイズできるさまざまな子要素を取ることができます。
複数の wsdlOptions
要素をプラグイン設定に追加できます。各要素は、処理用に単一の WSDL ドキュメントを設定します。
デフォルトのオプション
defaultOptions
要素はオプションの要素です。これは、指定されたすべての WSDL ドキュメントで使用されるオプションを設定するために使用できます。
wsdlOptions
要素でオプションが複製する場合、wsdlOptions
要素の値が優先されます。
コード生成オプションの指定
汎用コード生成オプション (Apache CXF wsdl2java
コマンドラインツールでサポートされるスイッチに対応) を指定するには、extraargs
要素を wsdlOption
要素の子として追加できます。たとえば、以下のように -impl
オプションと -verbose
オプションを追加できます。
... <configuration> <sourceRoot>target/generated/src/main/java</sourceRoot> <wsdlOptions> <wsdlOption> <wsdl>${basedir}/src/main/resources/wsdl/myService.wsdl</wsdl> <!-- you can set the options of wsdl2java command by using the <extraargs> --> <extraargs> <extraarg>-impl</extraarg> <extraarg>-verbose</extraarg> </extraargs> </wsdlOption> </wsdlOptions> </configuration> ...
スイッチが引数を取る場合、後続の extraarg
要素を使用してそれらを指定できます。たとえば、jibx
データバインディングを指定するには、以下のようにプラグインを設定します。
... <configuration> <sourceRoot>target/generated/src/main/java</sourceRoot> <wsdlOptions> <wsdlOption> <wsdl>${basedir}/src/main/resources/wsdl/myService.wsdl</wsdl> <extraargs> <extraarg>-databinding</extraarg> <extraarg>jibx</extraarg> </extraargs> </wsdlOption> </wsdlOptions> </configuration> ...
バインディングファイルの指定
1 つまたは複数の JAX-WS バインディングファイルの場所を指定するには、bindingFiles
要素を wsdlOption
の子要素として追加します。以下に例を示します。
... <configuration> <wsdlOptions> <wsdlOption> <wsdl>${basedir}/src/main/resources/wsdl/myService.wsdl</wsdl> <bindingFiles> <bindingFile>${basedir}/src/main/resources/wsdl/async_binding.xml</bindingFile> </bindingFiles> </wsdlOption> </wsdlOptions> </configuration> ...
特定の WSDL サービスのコードの生成
コードが生成される WSDL サービスの名前を指定するには、serviceName
要素を wsdlOption
の子要素として追加できます (デフォルトでは WSDL ドキュメントのすべてのサービスのコードが生成されます)。以下に例を示します。
... <configuration> <wsdlOptions> <wsdlOption> <wsdl>${basedir}/src/main/resources/wsdl/myService.wsdl</wsdl> <serviceName>MyWSDLService</serviceName> </wsdlOption> </wsdlOptions> </configuration> ...
複数の WSDL ファイルのコード生成
複数の WSDL ファイルのコードを生成するには、WSDL ファイルの追加 wsdlOption
要素を挿入するだけです。すべての WSDL ファイルに適用される共通のオプションを指定する場合は、以下のように共通のオプションを defaultOptions
要素に配置します。
<configuration> <defaultOptions> <bindingFiles> <bindingFile>${basedir}/src/main/jaxb/bindings.xml</bindingFile> </bindingFiles> <noAddressBinding>true</noAddressBinding> </defaultOptions> <wsdlOptions> <wsdlOption> <wsdl>${basedir}/src/main/resources/wsdl/myService.wsdl</wsdl> <serviceName>MyWSDLService</serviceName> </wsdlOption> <wsdlOption> <wsdl>${basedir}/src/main/resources/wsdl/myOtherService.wsdl</wsdl> <serviceName>MyOtherWSDLService</serviceName> </wsdlOption> </wsdlOptions> </configuration>
ワイルドカードマッチングを使用して複数の WSDL ファイルを指定することもできます。この場合、wsdlRoot
要素を使用して WSDL ファイルが含まれるディレクトリーを指定し、include
要素を使用して必要な WSDL ファイルを選択します。その際、*
文字を使用したワイルドカードがサポートされます。たとえば、src/main/resources/wsdl
ルートディレクトリーから Service.wsdl
で終わるすべての WSDL ファイルを選択するには、プラグインを以下のように設定します。
<configuration> <defaultOptions> <bindingFiles> <bindingFile>${basedir}/src/main/jaxb/bindings.xml</bindingFile> </bindingFiles> <noAddressBinding>true</noAddressBinding> </defaultOptions> <wsdlRoot>${basedir}/src/main/resources/wsdl</wsdlRoot> <includes> <include>*Service.wsdl</include> </includes> </configuration>
Maven リポジトリーからの WSDL のダウンロード
Maven リポジトリーから WSDL ファイルを直接ダウンロードするには、wsdlArtifact
要素を wsdlOption
要素の子要素として追加し、以下のように Maven アーティファクトの変数を指定します。
... <configuration> <wsdlOptions> <wsdlOption> <wsdlArtifact> <groupId>org.apache.pizza</groupId> <artifactId>PizzaService</artifactId> <version>1.0.0</version> </wsdlArtifact> </wsdlOption> </wsdlOptions> </configuration> ...
エンコーディング
(JAXB 2.2 が必要です) 生成された Java ファイルに使用される文字エンコーディング (Charset) を指定するには、以下のように encoding
要素を configuration
要素の子要素として追加します。
... <configuration> <wsdlOptions> <wsdlOption> <wsdl>${basedir}/src/main/resources/wsdl/myService.wsdl</wsdl> </wsdlOption> </wsdlOptions> <encoding>UTF-8</encoding> </configuration> ...
別のプロセスのフォーク
fork
要素を configuration
要素の子として追加することで、コード生成用に別の JVM をフォークするように codegen プラグインを設定できます。fork 要素は、次のいずれかの値に設定できます。
once
- 単一の新しい JVM をフォークして、codegen プラグインの設定で指定されたすべての WSDL ファイルを処理します。
always
- 新しい JVM をフォークして、codegen プラグインの設定で指定された各 WSDL ファイルを処理します。
false
- (デフォルト) フォークを無効にします。
codegen プラグインが別の JVM をフォークするよう設定される場合 (つまり、fork
オプションが false 以外の値に設定された場合)、additionalJvmArgs
要素を使用してフォークされた JVM に追加の JVM 引数を指定できます。たとえば、以下のフラグメントでは、codegen プラグインを 1 つの JVM をフォークするよう設定します。これは、ローカルファイルシステムからの XML スキーマへのアクセスだけに制限されます (javax.xml.accessExternalSchema
システムプロパティーを設定して)。
... <configuration> <wsdlOptions> <wsdlOption> <wsdl>${basedir}/src/main/resources/wsdl/myService.wsdl</wsdl> </wsdlOption> </wsdlOptions> <fork>once</fork> <additionalJvmArgs>-Djavax.xml.accessExternalSchema=jar:file,file</additionalJvmArgs> </configuration> ...
オプションの参照
コード生成プロセスの管理に使用するオプションは、以下の表で確認してください。
オプション | 解釈 |
---|---|
[option]`-fe | -frontend frontend` |
コードジェネレーターが使用するフロントエンドを指定します。設定可能な値は | [option]`-db |
-databinding databinding` |
コードジェネレーターが使用するデータバインディングを指定します。設定可能な値は |
|
ツールで必要となる WSDL バージョンを指定します。デフォルトは |
| 生成されたコードに使用するパッケージ名を 0 個以上、指定します。オプションで、WSDL 名前空間からパッケージ名へのマッピングを指定します。 |
|
1 つ以上の JAXWS または JAXB バインディングファイルを指定します。バインディングファイルごとに、それぞれ |
| コードが生成される WSDL サービスの名前を指定します。デフォルトでは、WSDL ドキュメント内のすべてのサービスのコードが生成されます。 |
|
|
| インポートされたスキーマと WSDL ドキュメントの解決に使用する XML カタログの URL を指定します。 |
| 生成されたコードファイルを書き込むディレクトリーを指定します。 |
| 生成された Java ファイルをコンパイルします。 |
| コンパイルされたクラスファイルが書き込まれるディレクトリーを指定します。 |
|
すべてのクライアントクラスと WSDL を含む JAR ファイルを生成します。このオプションが指定されている場合、 |
| クライアントメインラインの開始点コードを生成します。 |
| サーバーメインラインの開始点コードを生成します。 |
| 実装オブジェクトの開始点コードを生成します。 |
|
すべての開始点コード (型、サービスプロキシー、サービスインターフェイス、サーバーメインライン、クライアントメインライン、実装オブジェクト、および Ant |
|
Ant |
| バインディングのカスタマイズを使用せずに、名前の競合を自動的に解決します。 |
|
生成されたクライアントと実装のデフォルト値を入力するようにツールに指示します。オプションで、デフォルト値の生成に使用されるクラス名を指定することもできます。デフォルトでは、 |
| コードの生成時に、指定された WSDL スキーマの名前空間を無視します。このオプションは複数回指定できます。また、オプションで、除外された名前空間で記述されたタイプで使用される Java パッケージ名を指定します。 |
| 拡張 soap ヘッダーメッセージバインディングの処理を有効または無効にします。デフォルトは false です。 |
| タイプの生成をオフにします。 |
| デフォルトの名前空間パッケージ名マッピングのロードを有効または無効にします。デフォルトは true です。 |
| デフォルトの除外名前空間マッピングのロードを有効または無効にします。デフォルトは true です。 |
|
JAXB データバインディングが使用されているときに XJC に直接渡される引数のコンマ区切りリストを指定します。設定可能なすべての XJC 引数の一覧を取得するには、 |
| JAX-WS 2.1 準拠のマッピングの代わりに、Apache CXF 独自の WS-Addressing タイプを使用するようにツールに指示します。 |
[option]`-validate [=all | basic |
none]` | コードを生成する前に、WSDL ドキュメントを検証するようにツールに指示します。 |
| 既存のファイルを上書きしないようにツールに指示します。 |
|
|
| ツールのバージョン番号を表示します。 |
[option]`-verbose | -V` |
コード生成プロセス中にコメントを表示します。 |
|
コード生成プロセス中のコメントを非表示にします。 |
|
|
|
クライアント側の非同期呼び出しを許可する、その後生成される Java クラスメソッドのリスト。JAX-WS バインディングファイルの |
|
ラッパースタイル (下記を参照) を持つための、その後生成される Java クラスメソッドのリスト。JAX-WS バインディングファイルの |
|
mime:content マッピングを有効にするための、その後生成される Java クラスメソッドのリスト。JAX-WS バインディングファイルの |
|
障害例外の suid を生成する方法。設定可能な値は、 |
|
Java コードを生成するときに使用する Charset エンコーディングを指定します。 |
|
|
|
生成された SEI インターフェイスのベースインターフェイスを指定します。たとえば、このオプションを使用して、Java 7 |
|
[a]
現在、Apache CXF は、コードジェネレーターの WSDL1.1 のみをサポートします。
|