9.3.3 サービスクラスを生成する
取得したWSDLからサービスクラスを生成します。サービスクラスはcjwsimportコマンドで生成します。
コマンドの入力例を次に示します。
cjwsimport -s <ソースファイルの出力先ディレクトリ> -d <コンパイル済みクラスファイルの出力先ディレクトリ> cscmsg_ws_doc.wsdl
JAX-WSエンジンの場合,WSDLのスタイルはdocument-literalになるため,「cscmsg_ws_doc.wsdl」と設定します。
なお,このコマンドの入力例は,「9.3.2 WSDLを取得する」で取得したWSDL(cscmsg_ws_doc.wsdl)がcjwsimportコマンドを実行するカレントディレクトリに格納されている場合の例になります。
cjwsimportコマンドのオプションなどの詳細については,マニュアル「アプリケーションサーバ Webサービス開発ガイド」の「14.1.1 cjwsimportコマンド」を参照してください。
このコマンドを実行すると,指定したソースファイルの出力先ディレクトリに,次のディレクトリおよびファイルが生成されます。
/ソースファイルの出力先ディレクトリ ├jp/co/hitachi/soft/csc/msg/message/reception/ejb/ |├CSCMsgServerFaultException.java || //HCSCサーバ独自のフォルト情報が格納されるクラス |├CSCMsgServerFaultException_Exception.java || //CSCMsgServerFaultExceptionをラッパする例外クラス |├CSCMsgSyncServiceDeliveryWSImpl.java || //WSDLのportType要素に対応するサービスエンドポイントインターフェース |├CSCMsgSyncServiceDeliveryWSImplService.java || //サービスクラス |├GetServiceInfo.java || //getServiceInfoオペレーションの要求電文に対するJavaBeanクラス※1 |├GetServiceInfoResponse.java || //getServiceInfoオペレーションの応答電文に対するJavaBeanクラス※1 |├InvokeBinary.java || //invokeBinaryオペレーションの要求電文に対するJavaBeanクラス※1 |├InvokeBinaryResponse.java || //invokeBinaryオペレーションの応答電文に対するJavaBeanクラス※1 |├InvokeBPXML.java || //invokeBPXMLオペレーションの要求電文に対するJavaBeanクラス※1 |├InvokeBPXMLResponse.java || //invokeBPXMLオペレーションの応答電文に対するJavaBeanクラス※1 |├InvokeXML.java || //invokeXMLオペレーションの要求電文に対するJavaBeanクラス※1 |├InvokeXMLResponse.java || //invokeXMLオペレーションの応答電文に対するJavaBeanクラス※1 |├ObjectFactory.java || //JAXB2.1仕様のObjectFactoryクラス |└package-info.java | //JAXB2.1で使用するファイル └cscmsg_ws_doc.wsdl※2
- 注※1
-
JAXB2.1で使用します。
- 注※2
-
この出力例は,次の状態でcjwsimportコマンドを実行した場合の例になります。
-
cjwsimportコマンドの-sオプションに指定したディレクトリに「9.3.2 WSDLを取得する」で取得したWSDL(cscmsg_ws_doc.wsdl)が格納されている。cjwsimportコマンドに指定したWSDLも,-sオプションに指定したディレクトリに存在するWSDLを指定している。
-
cjwsimportコマンドで-sオプションを省略して実行し,cjwsimportコマンドを実行するカレントディレクトリに「9.3.2 WSDLを取得する」で取得したWSDL(cscmsg_ws_doc.wsdl)が格納されている。cjwsimportコマンドに指定したWSDLもディレクトリを指定しないで,カレントディレクトリに存在するWSDLを指定している。
なお,cjwsimportコマンドに指定したWSDL(cscmsg_ws_doc.wsdl)は,コマンドを実行したあと,-sオプションに指定したソースファイルの出力先ディレクトリには出力されません。
-
- 注意事項
-
JAX-WSエンジンに対応したサービスリクエスタの場合,プログラム実行時にWSDLを読み込みます。サービスクラスのデフォルトコンストラクタを使用する場合は,cjwsimportコマンドで指定したWSDLのパス(「9.3.2 WSDLを取得する」で取得したWSDLファイルをサービスクラス生成のために格納したディレクトリ)のWSDLを読み込みます。そのため,cjwsimportコマンドを実行したあと,サービスクラスを基点としたWSDLファイルの構成位置は,相対関係を壊すような構成にならないよう,WSDLファイルを移動しないでください。サービスリクエスタ実行時に参照するWSDLの構成位置を,cjwsimportコマンドで指定したWSDLのパスから変更する場合は,URLを指定できるコンストラクタを使用してください。