Cosminexus V9 BPM/ESB基盤 サービスプラットフォーム 開発ガイド 基本開発編
SOAP受付に要求を出すサービスリクエスタとして,JAX-WSエンジンを使用して通信するサービスリクエスタを作成できます。JAX-WSエンジンを使用して通信するサービスリクエスタは,SOAP(document-literal型)を利用して,SOAP受付に要求電文を送信します。
JAX-WSエンジンの場合のサービスリクエスタとHCSCサーバの関係を次の図に示します。
図8-34 JAX-WSエンジンを使用して通信するサービスリクエスタとHCSCサーバの関係(SOAP受付)
JAX-WSエンジンを使用して通信するサービスリクエスタの作成手順を次に示します。
図8-35 JAX-WSエンジンを使用して通信するサービスリクエスタの作成手順(SOAP受付)
各工程の作業を次に示します。
WSDLの編集方法は,SOAP通信基盤でサービスリクエスタを作成する場合と同じです。
WSDLの編集方法については,「8.7.2 WSDLを編集する」を参照してください。
編集したWSDLからサービスクラスを生成します。サービスクラスは,サービスプラットフォームが開発支援コマンドとして提供するcjwsimportコマンドで生成します。
コマンドの入力例を次に示します。
cjwsimport -s <ソースファイルの出力先ディレクトリ> -d <コンパイル済みクラスファイルの出力先ディレクトリ> <WSDLファイル> |
cjwsimportコマンドのオプションなどの詳細については,マニュアル「アプリケーションサーバ Webサービス開発ガイド」の「14.1 cjwsimportコマンド」を参照してください。
なお,「(1) WSDLの編集」で編集したWSDLファイルが,cjwsimportコマンドを実行するカレントディレクトリと異なる場所に格納されている場合は,ディレクトリも指定してください。
このコマンドを実行すると,WSDLに記述されている内容に基づいて,指定したソースファイルの出力先ディレクトリに,ディレクトリおよびファイルが生成されます。
SOAP受付のメソッドを呼び出すために,生成したサービスクラスを使用して,プロキシクラスのオブジェクトを生成します。
生成したサービスクラスを基に,SOAP受付を呼ぶためのプロキシクラスのオブジェクトを生成する手順を示します。
生成したオブジェクトのメソッドを呼び出すことで,SOAP受付にサービス部品の実行が要求されます。サービスクラスのオブジェクト内で,WSDLで定義された形式の要求電文(SOAPメッセージ)を自動生成します。
応答電文の取得方法は,SOAP通信基盤でサービスリクエスタを作成する場合と同じです。
応答電文の取得については,「8.7.5 応答電文を取得する」を参照してください。
要求先のサービス部品,HCSCサーバ,およびSOAPエンジンでエラーが発生した場合,エラー情報を取得し,その情報に従って対処します。
/** * Sample Program */ { try { : } catch (xxxxxxxxxxException_Exception e) { // WSDLに定義しているSOAPフォルトが返ってきた場合 xxxxxxxxxxException faultInfo = e.getFaultInfo(); : } catch (SOAPFaultException e) { // HCSCサーバ内で何らかのエラーが発生した場合 SOAPFault soapFault = e.getFault(); if(soapFault != null) { // SOAPフォルトの情報を出力 System.err.println("faultCode=" + soapFault.getFaultCode()); System.err.println("faultActor=" + soapFault.getFaultActor()); System.err.println("faultString=" + soapFault.getFaultString()); Detail detail = soapFault.getDetail(); if(detail != null) { for(Iterator ite = detail.getDetailEntries(); ite.hasNext(); ) { printDetail((Element)ite.next()); } } } } } |
表8-20 getDetail()メソッドを使用して取得したElement[]の構造
名称 | 内容 |
---|---|
errorMessage | 例外に設定されているエラーメッセージです。 |
errorCode | 例外に設定されているエラーメッセージに対応するエラーコードです。 |
processInstanceID | ビジネスプロセスのプロセスインスタンスIDです。メッセージング基盤内で検出したエラーの場合は設定されていないためnull(nil属性)となります。ビジネスプロセスで発生したエラーの場合に該当します。 |
All Rights Reserved. Copyright (C) 2012, 2019, Hitachi, Ltd.