10.2.10 サービスアダプタの稼働状況確認を要求するサービスリクエスタの作成(Webサービス・SOAP通信基盤)
標準の同期受付(Webサービス)に要求を出すサービスリクエスタとして,アプリケーションからサービスアダプタの稼働状況確認を要求するサービスリクエスタを作成できます。
サービスアダプタの稼働状況を確認するには,標準の同期受付(Webサービス)に要求を出すサービス部品の呼び出しとは別に,稼働状態確認用のメソッドを呼び出す処理を追加する必要があります。
標準の同期受付(Webサービス)にアプリケーションからサービスアダプタの稼働状況確認を要求するサービスリクエスタの作成手順を次に示します。
図10-11 サービスアダプタの稼働状況確認を要求するサービスリクエスタの作成手順(標準の同期受付(Webサービス・SOAP通信基盤))
![[図データ]](figure/zc100400.gif)
各工程の作業を次に示します。
- <この項の構成>
- (1) WSDLの取得
- (2) スタブの生成
- (3) オブジェクトの生成
- (4) パラメタの設定
- (5) 応答電文の取得
- (6) エラー情報の取得
(1) WSDLの取得
WSDLの取得方法は,標準の同期受付(Webサービス)に要求を出す,通常のサービスリクエスタを作成する場合と同じです。
なお,サービス部品の呼び出し用の処理と,稼働状態確認用の処理で,WSDLを使い分ける必要はありません。
WSDLの取得方法については,「10.2.2 WSDLを取得する」を参照してください。
(2) スタブの生成
スタブの生成方法は,標準の同期受付(Webサービス)に要求を出す,通常のサービスリクエスタを作成する場合と同様に,Cosminexusが開発支援コマンドとして提供するWSDL2Javaコマンドで生成します。
スタブの生成については,「10.2.3 スタブを生成する」を参照してください。
(3) オブジェクトの生成
サービスアダプタの稼働状況確認を要求するメソッドを呼び出すためのオブジェクトを生成する手順を次に示します。
- サービス部品のインターフェースクラスであるCSCMsgSyncServiceDeliveryWSImplServiceLocatorクラスのオブジェクトを生成します。
- (例)
CSCMsgSyncServiceDeliveryWSImplServiceLocator locator
= new CSCMsgSyncServiceDeliveryWSImplServiceLocator(); |
- サービス部品のインターフェースクラスのオブジェクトを使用して,サービスリクエスタのインターフェースクラスであるCSCMsgSyncServiceDeliveryWSImpl.javaクラスのオブジェクトを生成します。
なお,生成・取得したサービスリクエスタのインターフェースクラスのインスタンスは,複数のスレッドで共有できません。
- (例)
CSCMsgSyncServiceDeliveryWSImpl ws = null;
try {
ws = locator.getCSCMsgSyncServiceDeliveryWSImpl();
}catch (ServiceException e) {
e.printStackTrace();
return;
} |
サービス部品への接続先は,WSDL定義内のService要素のaddress子要素であるlocation属性となります。サービスリクエスタのプログラム内で,サービス部品への接続先情報を取得する場合は,次のように記述します。
- (例)
String url = locator.getCSCMsgSyncServiceDeliveryWSImplAddress(); |
- 生成したCSCMsgSyncServiceDeliveryWSImpl.javaクラスのオブジェクトを使用して,同期受付(Webサービス)のサービスアダプタの稼働状況確認を要求するメソッドを呼び出します。
- (例)optionに"type=status"を指定した場合
String result = ws.getServiceInfo( // メソッドの呼び出し
serviceName, // サービス名
clientID, // クライアント相関ID
"type=status"); // オプション |
- (例)optionに"type=status,returnType=XML"を指定した場合
String result = ws.getServiceInfo( // メソッドの呼び出し
serviceName, // サービス名
clientID, // クライアント相関ID
"type=status,returnType=XML");
// オプション |
(4) パラメタの設定
サービスアダプタの稼働状況確認を要求するためには,getServiceInfoメソッドを使用します。メソッドの引数となるパラメタは,標準の同期受付(Webサービス)に要求を出す通常のサービスリクエスタを作成する場合と異なります。
同期受付(Webサービス)にサービスアダプタの稼働状況確認を要求するサービスリクエスタの場合に設定するパラメタの詳細を次に示します。
表10-7 パラメタの詳細(標準の同期受付(Webサービス)/サービスアダプタの稼働状況確認要求)
パラメタ名 | データ型 | パラメタ(invokeBPXML) | 説明 |
---|
サービス名 (serviceName) | java.lang.String | in0(type="xsd:string") | サービスアダプタの稼働状況を確認するときの要求先のサービス名です。 このパラメタは必ず指定してください。 要求先のサービス名は,HCSCサーバに配備されているサービスアダプタを指定してください。 |
クライアント相関ID (clientID) | java.lang.String | in1(type="xsd:string") | サービスリクエスタからの要求電文を一意に識別するための相関識別子です。 255文字以内の英数字,アンダーライン(_),ピリオド(.)およびハイフン(-)で指定してください。 サービスリクエスタからの要求電文と,HCSCサーバで管理している実行履歴やログおよびトレースを対応づけるために使用します。したがって,HCSCサーバに送信した要求電文ごとに異なるIDを指定してください。 クライアント相関IDを省略したい場合,NULLを指定してください。 |
オプション (option) | java.lang.String | in2(type="xsd:string") | 稼働状況の確認結果を取得するときに選択するオプションです。 オプションの入力形式は,「キー名称=値」です。オプションの前後はダブルクォーテーション(")で囲んでください。また,複数のオプションを指定する場合は,コンマ(,)で区切って指定してください。※1
- (例)
- "キー名称=値,キー名称=値"
指定できるオプションを次に示します。
- type={all/status}
- 取得する情報のパターンを指定するオプションです。
- all(初期値)
serviceNameに指定したサービス名に該当するすべての情報を応答します。
- status
serviceNameに指定したサービス名に該当する状態,HCSCサーバ名,およびクラスタ名を応答します。
- returnType={Properties/String/XML}
- 応答の形式を指定するオプションです。
- Properties(初期値)
java.util.Propertiesクラスに含まれるすべてのプロパティをXMLドキュメント形式※2で応答します。なお,値が存在しない場合は,プロパティのキーは存在しません。※3
- String
java.util.PropertiesクラスをtoString()変換した形式で応答します。なお,値が存在しない場合は,プロパティのキーは存在しません。
- XML
HCSCサーバが定義するXMLスキーマのXMLドキュメント形式で応答します。なお,値が存在しない場合は,空タグで応答します。
|
- (凡例)
- inX(X=0~2):スタブで示しているメソッドごとのパラメタです。
- 注※1
- コンマ(,)の前または後,イコール(=)の前または後に空白がある場合はエラーになります。また,文字列の最後がコンマ(,)にならないように指定してください。
- 注※2
- PropertiesクラスのstoreToXML()メソッドを使用して,UTF-8エンコードしたXML形式です。この形式は,PropertiesクラスのloadFromXML()メソッドを使用してPropertiesクラスに復元できます。
- 注※3
- Propertiesクラスで取得するとnullを応答します。
(5) 応答電文の取得
パラメタのオプションで指定した形式でサービスアダプタの稼働状況確認の応答電文が返ります。
次に応答電文の形式と例を説明します。
(a) 応答電文の形式
応答電文で取得できる情報については,typeオプションに指定する内容によって異なります。応答電文で取得できる情報を次に示します。
表10-8 応答電文で取得できる情報
キーまたはタグ | 情報の内容 | typeオプション指定による応答情報 |
---|
all | status |
---|
HCSCServerName | HCSCサーバ名 | ○ | ○ |
ClusterName | クラスタ名 | ○ | ○ |
ServiceName | サービス名 | ○ | × |
ServiceStatus | サービスアダプタの状態 | ○ | ○ |
ServiceKind | サービスの種別 | ○ | × |
ServiceProtocolKind | アダプタのプロトコル種別 | ○ | × |
AdapterName | アダプタ名 | ○ | × |
AdapterLocalCall | ローカルキュー使用状況 | ○※ | × |
EntryTime | アダプタ定義追加時刻 | ○ | × |
ModifiedTime | アダプタ定義更新時刻 | ○ | × |
(凡例)○:取得できます。 ×:取得できません。
注※ ServiceProtocolKindがMDB_WSRの場合だけ応答します。
取得情報の詳細を次に説明します。
- ●HCSCServerName
- 説明
- 情報を取得したHCSCサーバ名を取得します。
- ●ClusterName
- 説明
- アダプタ(サービスアダプタ)を所有しているクラスタ名を取得します。
- ●ServiceName
- 説明
- オプションに"type=all"を指定した場合に,配備されているサービス名を取得します。オプションに"type=status"を指定した場合は,この情報は取得しません。
- ●ServiceStatus
- 説明
- サービスアダプタの状態を取得します。
- active:起動状態
- inactive:停止状態
- starting:起動処理中
- startfailed:起動失敗状態
- stopping:停止処理中
- stopfailed:停止失敗状態
- deleting:削除処理中
- ●ServiceKind
- 説明
- オプションに"type=all"を指定した場合に,配備されているサービスの種別を取得します。オプションに"type=status"を指定した場合は,この情報は取得しません。
- ●ServiceProtocolKind
- 説明
- オプションに"type=all"を指定した場合に,アダプタのプロトコルの種別を取得します。オプションに"type=status"を指定した場合は,この情報は取得しません。
- WebService:SOAP(HTTP)(同期受付(Webサービス))
- SessionBean:RMI-IIOP(同期受付(SessionBean))
- MDB_WSR:WS-R(非同期受付(MDB(WS-R)))
- MDB_DBQ:Cosminexus RM独自のプロトコルまたはJMS(非同期受付(MDB(DBキュー)))
- Custom:カスタムアダプタ
- ●AdapterName
- 説明
- オプションに"type=all"を指定した場合に,配備されているアダプタ名を取得します。オプションに"type=status"を指定した場合は,この情報は取得しません。
- ●AdapterLocalCall
- 説明
- オプションに"type=all"を指定した場合に,アダプタのローカルキューの使用状況を取得します。オプションに"type=status"を指定した場合は,この情報は取得しません。
- この項目はServiceProtocolKindがMDB_WSRの場合だけ応答します。
- true:ローカルキューを使用している
- false:ローカルキューを使用していない
- ●EntryTime
- 説明
- オプションに"type=all"を指定した場合に,サービスアダプタを配備した時刻(定義登録時刻)を応答します。オプションに"type=status"を指定した場合は,この情報は応答しません。
- 形式
YYYY/MM/DD hh:mm:ss.SSS
- YYYY:西暦
- MM:月
- DD:日
- hh:時
- mm:分
- ss:秒
- SSS:ミリ秒
- ●ModifiedTime
- 説明
- オプションに"type=all"を指定した場合に,サービスアダプタを開発環境で定義した時刻(更新時刻)を応答します。オプションに"type=status"を指定した場合は,この情報は応答しません。
- 形式
YYYY/MM/DD hh:mm:ss
- YYYY:西暦
- MM:月
- DD:日
- hh:時
- mm:分
- ss:秒
(b) 応答電文の例
応答電文の例を次に示します。
- (例1)optionに"type=all,returnType=Properties"を指定した場合
<?xml version="1.0" encoding="UTF-8"?>
<getServiceInfoResponse>
<HCSCServerName>HCSC</HCSCServerName>
<ClusterName>Cluster</ClusterName>
<ServiceName>Service1</ServiceName>
<ServiceStatus>Active</ServiceStatus>
<ServiceKind>ServiceAdapter</ServiceKind>
<ServiceProtocolKind>WebService</ServiceProtocolKind>
<AdapterName>ad1</AdapterName><AdapterLocalCall/>
<EntryTime>YYYY/MM/DD hh:mm:ss.SSS</EntryTime>
<ModifiedTime>YYYY/MM/DD hh:mm:ss</ModifiedTime>
</getServiceInfoResponse> |
- 注1
- 値の順番は変わることがあります(順不同です)。
- 注2
- optionに"type=status,returnType=Properties"を指定した場合は,応答しない情報は応答電文に存在しません。
- (例2)optionに"type=all,returnType=String"を指定した場合
{HCSCServerName=HCSC,ClusterName=Cluster,ServiceName=Service1,ServiceStatus=Active,ServiceKind=ServiceAdapter,ServiceProtocolKind=WebService,AdapterName=ad1,EntryTime=YYYY/MM/DD hh:mm:ss.SSS,ModifiedTime=YYYY/MM/DD hh:mm:ss} |
- 注1
- 値の順番は変わることがあります(順不同です)。
- 注2
- optionに"type=status,returnType=String"を指定した場合は,応答しない情報は応答電文に存在しません。
- (例3)optionに"type=all,returnType=XML"を指定した場合
<?xml version="1.0" encoding="UTF-8"?>
<getServiceInfoResponse>
<HCSCServerName>HCSC</HCSCServerName>
<ClusterName>Cluster</ClusterName>
<ServiceName>Service1</ServiceName>
<ServiceStatus>Active</ServiceStatus>
<ServiceKind>ServiceAdapter</ServiceKind>
<ServiceProtocolKind>WebService</ServiceProtocolKind>
<AdapterName>ad1</AdapterName>
<AdapterLocalCall/>
<EntryTime>YYYY/MM/DD hh:mm:ss.SSS</EntryTime>
<ModifiedTime>YYYY/MM/DD hh:mm:ss</ModifiedTime>
</getServiceInfoResponse> |
- 注1
- 値が存在しない場合は,空タグで応答します。
- (例)
- <AdapterLocalCall/>
- 注2
- オプションに"type=status,returnType=XML"を指定した場合は,応答しない情報の<タグ>は応答電文に存在しません。
-
(6) エラー情報の取得
サービスアダプタの稼働状況確認でエラーが発生した場合,CSCMsgServerFaultExceptionオブジェクトをキャッチして,SOAP Faultのエラー情報を取得します。
エラー情報の取得については,「10.2.8 エラー情報を取得する」を参照してください。
エラーになる主な要因として,次の場合が挙げられます。
- 必須の引数が指定されていない。
- 引数の入力値に誤りがある(形式不正)。
- HCSCサーバに該当のサービス名のサービスアダプタが配備されていない。
- リクエスト受付が起動状態ではない(停止状態,起動処理中,起動失敗状態,停止処理中,停止失敗状態,削除処理中)。