Hitachi

Cosminexus V11 アプリケーションサーバ Webサービス開発ガイド


14.1.1 cjwsimportコマンド

cjwsimportコマンドは,JAX-WS 2.2仕様で規定されているマッピング規則に従い,WSDLファイルからJavaにマッピングするコマンドです。cjwsimportコマンドを実行すると,WSDLファイルからWebサービスおよびWebサービスクライアントの実装に必要なJavaソースが生成され,コンパイルされます。

ここでは,cjwsimportコマンドを実行するときの形式や指定内容について説明します。

〈この項の構成〉

(1) 形式

cjwsimportコマンドの指定形式を次に示します。

cjwsimport [オプション群] <WSDLファイルのURLまたはファイルパス>
指定例
  • ローカルにあるWSDLファイルを相対パス(wsdl/input.wsdl)で指定

    cjwsimport -d generated wsdl/input.wsdl

  • ローカルにあるWSDLファイルを絶対パス(/tmp/wsdl/input.wsdl)で指定

    cjwsimport -d generated /tmp/wsdl/input.wsdl

  • ローカルにあるWSDLファイルをURL(file:///tmp/wsdl/input.wsdl)で指定

    cjwsimport -d generated file:///tmp/wsdl/input.wsdl

  • リモートにあるWSDLファイルをURL(http://example.com:8080/fromjava/test?wsdl)で指定

    cjwsimport -d generated http://example.com:8080/fromjava/test?wsdl

cjwsimportコマンド実行時の注意

cjwsimportコマンドは,「%」,「&」および「^」の文字を含んだディレクトリをカレントディレクトリとして実行することはできません。「%」,「&」および「^」の文字を含んだディレクトリをカレントディレクトリとして実行した場合の動作は保証されません。

WSDLファイル指定時の注意
  • 引数にはWSDLファイルのファイルパス(相対パスまたは絶対パス)またはWSDLへのURLを一つ指定します。WSDLファイル以外のファイルを指定した場合は,標準エラー出力とログにエラーメッセージが出力され,処理が終了されます(KDJW51200-E)。

  • WSDLをファイルパスで指定する場合,「&」および「^」を含んだ文字をファイルパスに使用しないでください。使用した場合の動作は保証されません。また,空白を含むファイルパスを指定する場合,ファイルパス全体を引用符(")で囲んでください。ファイルパス全体を引用符で囲まない場合の動作は保証されません。

  • WSDLをURLで指定する場合は,RFC 2396仕様で規定されている文字,およびRFC 2396仕様の規則に従った文字列を使用してください。さらに,文字列はRFC 2396仕様の規則に従って,UTF-8でパーセントエンコーディングする必要があります。RFC 2396仕様の規則に従わない,またはエンコードしない文字や文字列を指定した場合の動作は保証されません。

  • WSDLをjarプロトコルで指定することはできません。jarプロトコルで指定した場合の動作は保証されません。

  • WSDLファイルをファイルパスまたはWSDLへのURLで指定する場合は,正しいファイルパスまたはURLを指定してください。WSDLのファイルパスまたはWSDLへのURLの指定を誤り,WSDLファイルが見つからない場合は,標準エラー出力とログにエラーメッセージが出力され,処理が終了されます(KDJW51180-EまたはKDJW51189-E)。

  • 引数に指定するWSDLファイルの拡張子は任意です(.wsdl以外の拡張子を指定してもかまいません)。

  • 大文字,小文字は区別されません。

  • 指定する文字列の長さに制限はありません。ただし,OSの制限を超えた場合はエラーになります。

  • アクセス権限がないWSDLファイルを指定した場合,JDKのエラーとなり処理が終了されます。

(2) オプション一覧

cjwsimportコマンドのオプション群には,次の表に示すオプションを指定できます。

表14‒1 cjwsimportコマンドのオプション一覧

オプション

設定項目

指定内容

-d <ディレクトリ>

クラスファイルの出力先ディレクトリ

コンパイル済みクラスファイル(*.class)の出力先ディレクトリを指定します。

指定できる値については,表外の「-dオプション/-sオプション指定時の注意事項」を参照してください。

このオプションを指定しない場合は,カレントディレクトリに出力されます。

-keep

なし

ソースファイル(*.java)を生成する場合に指定します。

-s <ディレクトリ>

ソースファイルの出力先ディレクトリ

ソースファイル(*.java)を出力する場合の出力先ディレクトリを指定します。

指定できる値については,表外の「-dオプション/-sオプション指定時の注意事項」を参照してください。

出力先ディレクトリは,-dオプションおよび-sオプションの指定によって変わります。オプションの指定と出力先については,表14-3を参照してください。

-verbose

なし

コマンド実行時の詳細な処理経過を出力する場合に指定します。

-b <パス>

外部バインディングファイルのパス

外部バインディングファイルを使用する場合に,外部バインディングファイルのパスを指定します。

指定できる値については,表外の「-bオプション指定時の注意事項」を参照してください。

-p <パッケージ>

Javaコードのパッケージ名

Javaソースのパッケージ名を指定します。

このオプションを指定した場合,バインディング宣言で指定したパッケージ名のカスタマイズや,標準仕様で定義されたデフォルトのパッケージ名の生成アルゴリズムは上書きされます。

-generateService

Webサービス実装クラスの生成

Webサービス実装クラス(スケルトンクラス)を生成する場合に指定します。

生成されるファイルについては,「14.1.1(4) 生成されるファイル」を参照してください。

-help

なし

ヘルプを表示する場合に指定します。

このオプションを指定した場合,-versionを除くすべてのオプションの指定が無視され,ヘルプが表示されて終了します。

-version

なし

バージョン情報を表示する場合に指定します。

このオプションを指定した場合,ほかのオプションの指定が無視され,バージョン情報が表示されて終了します。

-wsdllocation

javax.xml.ws.WebServiceClientアノテーションの,wsdlLocation要素に設定する値

javax.xml.ws.WebServiceClientアノテーションの,wsdlLocation要素に設定する値を指定します。

-catalog <ファイル>

カタログファイルのパス

カタログ機能を利用する場合に指定します。指定できる値については表外の「-catalogオプション指定時の注意事項」を参照してください。

ファイル生成時のディレクトリの作成

cjwsimportコマンドを実行すると,指定した出力先ディレクトリに,生成されるファイルのパッケージ名に対応するディレクトリが作成され,そのディレクトリにファイルが出力されます。

WSDLファイル(test.wsdl)の「要求メッセージのwrapper要素が参照する型」の名前空間URIに,「http://example.com/sample」が記述されている場合のコマンド指定例および出力先(リクエストbeanの場合)を示します。

  • コマンド指定例

    cjwsimport -d ./output -keep input/test.wsdl

  • 出力先(リクエストbean)

    リクエストbeanのコンパイル済みクラスファイルとソースファイルは,次のディレクトリに出力されます。

    ./output/com/example/sample/

オプションに指定できる値や,指定を省略した場合の動作など,オプションの指定値についての注意事項を次に示します。

オプション共通の注意事項

全オプション共通の注意事項を示します。

  • オプション群と引数の指定順序は任意です。また,各オプションの指定順序も任意です。

  • 引数を持つオプションは,必ず引数を指定してください。引数を指定しない場合,標準エラー出力とログにエラーメッセージが出力され,処理が終了されます(KDJW51001-E)。

  • -catalogオプション以外は,同じオプションを重複して指定した場合,最後に指定したオプションが有効になります。

  • 大文字,小文字を区別します。

  • 指定する文字列の長さに制限はありません。ただし,OSの制限を超えた場合はエラーになります。

  • パスを指定するオプションには,「&」および「^」を含んだ文字列を使用しないでください。使用した場合の動作は保証されません。また,空白を含むパスを指定する場合,パス全体を引用符「"」で囲んでください。パス全体を引用符で囲まない場合の動作は保証されません。

  • 指定できないオプションを指定した場合は,標準エラー出力とログにエラーメッセージが出力され,処理が終了されます(KDJW51001-E)。

-dオプション/-sオプション指定時の注意事項

-dオプションおよび-sオプションの指定値についての注意事項を示します。

  • 指定値の大文字,小文字は区別されません。

  • 指定した出力先ディレクトリがない場合,標準エラー出力とログにエラーメッセージが出力され,処理が終了されます(KDJW51181-E)。

  • 出力先ディレクトリに誤ってファイルを指定した場合,標準エラー出力とログにエラーメッセージが出力され,処理が終了されます(KDJW51182-E)。

  • アクセス権限がないWSDLファイルを指定した場合,JDKのエラーとなり処理が終了されます。

-d/-s/-keepオプションの指定有無とファイルの出力先

-dオプション,-sオプション,および-keepオプションの指定によって,コンパイル済みクラスファイルと,ソースファイルの出力先ディレクトリが異なります。

オプションの指定有無とコンパイル済みクラスファイルの出力先ディレクトリを次の表に示します。

表14‒2 オプションの指定有無とコンパイル済みクラスファイルの出力先ディレクトリ

オプションの指定有無

ソースファイルの出力有無と出力先ディレクトリ

-d

-s

-keep

-dオプションで指定したディレクトリに出力されます。

×

カレントディレクトリに出力されます。

(凡例)

○:オプションが指定されていることを示します。

×:オプションが指定されていないことを示します。

−:オプションの指定有無は,出力先ディレクトリに影響しないことを示します。

オプションの指定有無とソースファイルの出力先ディレクトリを次の表に示します。

表14‒3 オプションの指定有無とソースファイルの出力先ディレクトリ

オプションの指定有無

ソースファイルの出力有無と出力先ディレクトリ

-d

-s

-keep

-sオプションで指定したディレクトリに出力されます。

×

-dオプションで指定したディレクトリに出力されます。

×

×

出力されません。

×

-sオプションで指定したディレクトリに出力されます。

×

×

カレントディレクトリに出力されます。

×

×

×

出力されません。

(凡例)

○:オプションが指定されていることを示します。

×:オプションが指定されていないことを示します。

−:オプションの指定有無は,出力先ディレクトリに影響しないことを示します。

-bオプション指定時の注意事項

-bオプションの指定値についての注意事項を示します。

  • 指定値の大文字,小文字は区別されません。

  • 外部バインディングファイルはファイルパスで指定してください。URL形式で指定した場合の動作は保証されません。

  • 指定した外部バインディングファイルがない場合,標準エラー出力とログにエラーメッセージが出力され,処理が終了されます(KDJW51184-E)。

  • 外部バインディングファイル以外のファイルを指定した場合,動作は保証されません。

  • 誤ってディレクトリを指定した場合,標準エラー出力とログにエラーメッセージが出力され,処理が終了されます(KDJW51185-E)。

  • アクセス権限がないWSDLファイルを指定した場合,JDKのエラーとなり処理が終了されます。

  • 指定した外部バインディングファイルがカスタマイズ対象とするWSDLファイルと,cjwsimportコマンドの引数に指定したカスタマイズ対象のWSDLファイルは同じファイルを指定してください。同じでない場合は,標準エラー出力とログにエラーメッセージが出力され,処理が終了されます(KDJW51190-E)。

  • 外部バインディングファイルの拡張子の指定は任意です。

-pオプション指定時の注意事項

-pオプションの指定値についての注意事項を示します。

  • パッケージ名は,半角英数字(0〜9,A〜Z,a〜z),アンダースコア(_),およびピリオド(.)で指定します。それ以外の文字を指定した場合,動作は保証されません。

  • "xxx.yyy.zzz"のようにピリオド(.)で区切られた各ラベル("xxx","yyy","zzz")は,Javaの識別子に使用できる文字列を指定してください。使用できない文字を指定した場合は,標準エラー出力とログにエラーメッセージが出力され,処理が終了されます。

-wsdllocationオプション指定時の注意事項
  • -wsdllocationオプションは,URI形式で指定してください。それ以外の形式で指定した場合の動作は保証されません。

  • -wsdllocationオプションで指定する値にjarプロトコルは指定できません。指定した場合の動作は保証されません。WSDLを示すURLとしてjarプロトコルを指定する場合は,サービスクラスの生成時にURLをパラメタに取るコンストラクタを使用してください。

-catalogオプション指定時の注意事項

-catalogオプションの指定値についての注意事項を示します。

  • -catalogオプションを重複して指定した場合の動作は保証されません。

  • 指定値の大文字,小文字は区別されません。

  • カタログファイルはファイルパスで指定してください。また,指定形式は,java.io.Fileクラスの仕様に従います。URL形式で指定した場合の動作は保証されません。

  • カタログファイルのファイルパスは,半角英数字(0〜9,A〜Z,a〜z),空白,ピリオド(.),アンダースコア(_),コロン(:),スラッシュ(/),および\で指定します。それ以外の文字を指定した場合,動作は保証されません。

  • カタログファイルは任意のファイル名を設定できます。

  • 指定したカタログファイルが存在しない場合,標準エラー出力とログに警告メッセージが出力され,カタログ機能が無効な状態で処理が続行されます(KDJW51219-W)。

  • カタログファイル以外のファイルを指定した場合,動作は保証されません。

  • 誤ってディレクトリを指定した場合,標準エラー出力とログに警告メッセージが出力され,カタログ機能が無効な状態で処理が続行されます(KDJW51220-W)。

  • サポートしていない構文で記述したカタログファイルを指定した場合,標準エラー出力とログに警告メッセージが出力され,カタログ機能が無効な状態で処理が続行されます(KDJW51221-W)。

  • アクセス権限のないカタログファイルを指定した場合,JDKのエラーとなりカタログ機能が無効な状態で処理が続行されます。

無視される値に指定した場合の動作について

コマンドの指定値のうち,指定しても無視されるとしているものに値を指定した場合,あとの処理でエラーになる可能性があります。

(3) WSIMPORT_OPTS環境変数の指定

WSIMPORT_OPTS環境変数にオプション文字列を指定すると,cjwsimportコマンドを起動するjavaコマンドにオプションを追加できます。デフォルトの設定では,WSIMPORT_OPTS環境変数には何も指定されていないので,必要に応じて任意の文字列を指定してください。

例えば,WSIMPORT_OPTS環境変数を利用して,SSL通信に必要なJDKのシステムプロパティを指定し,従来HTTPSを利用しないとWSDLにアクセスできないWSDLに対しても,cjwsimportコマンドを実行できます。例を次に示します。

> set WSIMPORT_OPTS=-Djavax.net.ssl.trustStore=<トラストストア> -Djavax.net.ssl.trustStorePassword=<トラストストアのパスワード>
> "%COSMINEXUS_HOME%\jaxws\bin\cjwsimport.bat" https://securehost:443/fromwsdl/TestJaxWsService?wsdl

(4) 生成されるファイル

cjwsimportコマンドの実行時に生成されるファイルを次の表に示します。

表14‒4 cjwsimportコマンドの生成ファイル一覧

項番

Javaコード

内容

-generateServiceオプションによる出力

指定あり

指定なし

1

リクエストbeanクラス

要求メッセージのwrapper要素が参照する型に対応するJavaBeanクラスです。

指定したWSDLファイルがwrapperスタイルでない場合は出力されません。

2

レスポンスbeanクラス

応答メッセージのwrapper要素が参照する型に対応するJavaBeanクラスです。

指定したWSDLファイルがwrapperスタイルでない場合は出力されません。

3

フォルトbeanクラス

フォルトメッセージが参照する型に対応するJavaBeanクラスです。

指定したWSDLファイルでフォルトが定義されていない場合は出力されません。

4

ラッパ例外クラス

フォルトbeanクラスのラッパ例外クラスです。

5

ObjectFactoryクラス

JAXB 2.2仕様のファクトリクラスです。

6

JAXB 2.2仕様のそのほかのクラス

JAXB 2.2仕様のそのほかのクラスです。XML Schema仕様の構文で記述した各種要素,型に対応するJavaインタフェースおよびJavaクラスです。

7

package-info.java

パッケージ情報です。

8

SEI

サービスエンドポイントインタフェースです。

9

スケルトンクラス

SEIを実装(implements)したスケルトンクラスです。このクラスに実装を追加します。

×

10

サービスクラス

Webサービスにアクセスするためのクラスです。

×

(凡例)

○:ファイルが出力されることを示します。

×:ファイルが出力されないことを示します。

ファイル生成時の注意事項

生成されるファイルの出力先ディレクトリにスケルトンクラスと同名のファイルがある場合は,標準エラー出力とログに警告メッセージが出力されます(KDJW51203-W)。このとき,スケルトンクラスは出力されないで,処理は続行されます。

また,生成されるファイルの出力先ディレクトリにWebサービス実装クラス以外の同名のファイルがある場合,ファイルが上書きされます。

Javadocのヘッダ情報の出力

生成されるファイルでは,Application Serverに関する情報が,Javadocとしてヘッダ情報に出力されます。

(5) 処理中の動作

cjwsimportコマンドを実行すると,標準出力とログにコマンド実行を示すメッセージ(KDJW50001-I)が出力され,Javaソースの生成処理およびJavaソースのコンパイル処理が行われます。それぞれの処理について,次に示します。

Javaソースの生成処理

Javaソースの生成開始時には,標準出力とログに生成開始を示すメッセージが出力されます(KDJW50004-I)。Javaソースの生成に失敗した場合,エラーの原因となったエラーメッセージが標準エラー出力とログに出力されます(KDJW50005-E)。

Javaソースのコンパイル処理

Javaソースのコンパイル開始時には,標準出力とログにコンパイル開始を示すメッセージが出力されます(KDJW50006-I)。Javaソースのコンパイルに失敗した場合は,エラーの原因となったエラーメッセージが標準エラー出力とログに出力されます(KDJW50007-E)。

(6) 終了コード

cjwsimportコマンドの終了コードを示します。

0:正常終了

処理の途中で続行できないエラーが検出されなければ,標準出力とログに終了したことを示すメッセージが表示され,処理が終了されます(KDJW50002-I)。

1:異常終了

処理の途中で続行できないエラーが一つでも検出された場合は,標準出力とログにエラーメッセージが表示され,処理が終了されます(KDJW50003-E)。異常終了時の対処については,「14.1.1(7) 異常終了時の対処」を参照してください。

処理の途中で続行できる軽微なエラーが検出された場合は,警告メッセージが出力され,処理が続行されます。

なお,設定した出力レベル(重要度)によって,ログが出力されない場合があります。ログの出力レベルの設定については,「10.1.2 共通定義ファイルの設定項目」を参照してください。

(7) 異常終了時の対処

cjwsimportコマンドの実行時に異常終了した場合,エラーメッセージが出力され,処理が終了されます。この場合,出力されたエラーの要因を取り除き,cjwsimportコマンドを再実行します。

複数のエラーがある場合でも,最初に検出されたエラーが表示されます。この場合,cjwsimportコマンドを繰り返し実行して,表示されたエラーの要因を一つずつ取り除いてください。