Cosminexus ビジネスプロセス管理/エンタープライズサービスバス V8 サービスプラットフォーム 開発ガイド
ユーザ定義受付(Webサービス)に要求を出すサービスリクエスタとして,JAX-WSエンジンを使用して通信するサービスリクエスタを作成できます。JAX-WSエンジンを使用して通信するサービスリクエスタは,SOAP(document-literal型)を利用して,ユーザ定義受付(Webサービス)に要求電文を送信します。
JAX-WSエンジンの場合のサービスリクエスタとHCSCサーバの関係を次の図に示します。
図10-34 JAX-WSエンジンを使用して通信するサービスリクエスタとHCSCサーバの関係(ユーザ定義受付(Webサービス))
JAX-WSエンジンを使用して通信するサービスリクエスタの作成手順を次に示します。
図10-35 JAX-WSエンジンを使用して通信するサービスリクエスタの作成手順(ユーザ定義受付(Webサービス))
各工程の作業を次に示します。
WSDLの編集方法は,SOAP通信基盤でサービスリクエスタを作成する場合と同じです。
WSDLの編集方法については,「10.7.2 WSDLを編集する」を参照してください。
編集したWSDLからサービスクラスを生成します。サービスクラスは,Cosminexusが開発支援コマンドとして提供するcjwsimportコマンドで生成します。
コマンドの入力例を次に示します。
cjwsimport -s <ソースファイルの出力先ディレクトリ> -d <コンパイル済みクラスファイルの出力先ディレクトリ> <WSDLファイル> |
cjwsimportコマンドのオプションなどの詳細については,マニュアル「Cosminexus アプリケーションサーバ Webサービス開発の手引」の「11.1 cjwsimportコマンド」を参照してください。
なお,「10.7.7(1) WSDLの編集」で編集したWSDLファイルが,cjwsimportコマンドを実行するカレントディレクトリと異なる場所に格納されている場合は,ディレクトリも指定してください。
このコマンドを実行すると,WSDLに記述されている内容に基づいて,指定したソースファイルの出力先ディレクトリに,ディレクトリおよびファイルが生成されます。
ユーザ定義受付(Webサービス)のメソッドを呼び出すために,生成したサービスクラスを使用して,プロキシクラスのオブジェクトを生成します。
生成したサービスクラスを基に,ユーザ定義受付(Webサービス)を呼ぶためのプロキシクラスのオブジェクトを生成する手順を示します。
生成したオブジェクトのメソッドを呼び出すことで,ユーザ定義受付にサービス部品の実行が要求されます。サービスクラスのオブジェクト内で,WSDLで定義された形式の要求電文(SOAPメッセージ)を自動生成します。
応答電文の取得方法は,SOAP通信基盤でサービスリクエスタを作成する場合と同じです。
応答電文の取得については,「10.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());
}
}
}
}
}
|
表10-20 getDetail()メソッドを使用して取得したElement[]の構造
| 名称 | 内容 |
|---|---|
| errorMessage | 例外に設定されているエラーメッセージです。 |
| errorCode | 例外に設定されているエラーメッセージに対応するエラーコードです。 |
| processInstanceID | ビジネスプロセスのプロセスインスタンスIDです。メッセージング基盤内で検出したエラーの場合は設定されていないためnull(nil属性)となります。ビジネスプロセスで発生したエラーの場合に該当します。 |
All Rights Reserved. Copyright (C) 2008, 2011, Hitachi, Ltd.