9.2.10 サービスアダプタの稼働状況確認を要求するサービスリクエスタの作成(Webサービス・SOAP通信基盤)
標準の同期受付(Webサービス)に要求を出すサービスリクエスタとして,アプリケーションからサービスアダプタの稼働状況確認を要求するサービスリクエスタを作成できます。
サービスアダプタの稼働状況を確認するには,標準の同期受付(Webサービス)に要求を出すサービス部品の呼び出しとは別に,稼働状態確認用のメソッドを呼び出す処理を追加する必要があります。
標準の同期受付(Webサービス)にアプリケーションからサービスアダプタの稼働状況確認を要求するサービスリクエスタの作成手順を次に示します。
各工程の作業を次に示します。
(1) WSDLの取得
WSDLの取得方法は,標準の同期受付(Webサービス)に要求を出す,通常のサービスリクエスタを作成する場合と同じです。
なお,サービス部品の呼び出し用の処理と,稼働状態確認用の処理で,WSDLを使い分ける必要はありません。
WSDLの取得方法については,「9.2.2 WSDLを取得する」を参照してください。
(2) スタブの生成
スタブの生成方法は,標準の同期受付(Webサービス)に要求を出す,通常のサービスリクエスタを作成する場合と同様に,サービスプラットフォームが開発支援コマンドとして提供するWSDL2Javaコマンドで生成します。
スタブの生成については,「9.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サービス)にサービスアダプタの稼働状況確認を要求するサービスリクエスタの場合に設定するパラメタの詳細を次に示します。
パラメタ名 |
データ型 |
パラメタ(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
指定できるオプションを次に示します。
|
(5) 応答電文の取得
パラメタのオプションで指定した形式でサービスアダプタの稼働状況確認の応答電文が返ります。
次に応答電文の形式と例を説明します。
(a) 応答電文の形式
応答電文で取得できる情報については,typeオプションに指定する内容によって異なります。応答電文で取得できる情報を次に示します。
キーまたはタグ |
情報の内容 |
typeオプション指定による応答情報 |
|
---|---|---|---|
all |
status |
||
HCSCServerName |
HCSCサーバ名 |
○ |
○ |
ClusterName |
クラスタ名 |
○ |
○ |
ServiceName |
サービス名 |
○ |
× |
ServiceStatus |
サービスアダプタの状態 |
○ |
○ |
ServiceKind |
サービスの種別 |
○ |
× |
ServiceProtocolKind |
サービスアダプタのプロトコル種別 |
○ |
× |
AdapterName |
サービスアダプタ名 |
○ |
× |
AdapterLocalCall |
ローカルキュー使用状況 |
○※ |
× |
EntryTime |
サービスアダプタ定義追加時刻 |
○ |
× |
ModifiedTime |
サービスアダプタ定義更新時刻 |
○ |
× |
取得情報の詳細を次に説明します。
- ●HCSCServerName
-
- 説明
-
情報を取得したHCSCサーバ名を取得します。
- ●ClusterName
-
- 説明
-
サービスアダプタを所有しているクラスタ名を取得します。
- ●ServiceName
-
- 説明
-
オプションに"type=all"を指定した場合に,配備されているサービス名を取得します。オプションに"type=status"を指定した場合は,この情報は取得しません。
- ●ServiceStatus
-
- 説明
-
サービスアダプタの状態を取得します。
-
active:起動状態
-
inactive:停止状態
-
starting:起動処理中
-
startfailed:起動失敗状態
-
stopping:停止処理中
-
stopfailed:停止失敗状態
-
deleting:削除処理中
-
- ●ServiceKind
-
- 説明
-
オプションに"type=all"を指定した場合に,配備されているサービスの種別を取得します。オプションに"type=status"を指定した場合は,この情報は取得しません。
-
ServiceAdapter:サービスアダプタ
-
- ●ServiceProtocolKind
-
- 説明
-
オプションに"type=all"を指定した場合に,サービスアダプタのプロトコルの種別を取得します。オプションに"type=status"を指定した場合は,この情報は取得しません。
-
WebService:SOAP(HTTP)(同期受付(Webサービス))
-
SessionBean:RMI-IIOP(同期受付(SessionBean))
-
MDB_WSR:WS-R(非同期受付(MDB(WS-R)))
-
MDB_DBQ:Reliable Messaging独自のプロトコルまたは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のエラー情報を取得します。
エラー情報の取得については,「9.2.8 エラー情報を取得する」を参照してください。
エラーになる主な要因として,次の場合が挙げられます。
-
必須の引数が指定されていない。
-
引数の入力値に誤りがある(形式不正)。
-
HCSCサーバに該当のサービス名のサービスアダプタが配備されていない。
-
リクエスト受付が起動状態ではない(停止状態,起動処理中,起動失敗状態,停止処理中,停止失敗状態,削除処理中)。