Hitachi

Cosminexus V11 BPM/ESB基盤 サービスプラットフォーム 開発ガイド 基本開発編


9.2.10 サービスアダプタの稼働状況確認を要求するサービスリクエスタの作成(Webサービス・SOAP通信基盤)

標準の同期受付(Webサービス)に要求を出すサービスリクエスタとして,アプリケーションからサービスアダプタの稼働状況確認を要求するサービスリクエスタを作成できます。

サービスアダプタの稼働状況を確認するには,標準の同期受付(Webサービス)に要求を出すサービス部品の呼び出しとは別に,稼働状態確認用のメソッドを呼び出す処理を追加する必要があります。

標準の同期受付(Webサービス)にアプリケーションからサービスアダプタの稼働状況確認を要求するサービスリクエスタの作成手順を次に示します。

図9‒11 サービスアダプタの稼働状況確認を要求するサービスリクエスタの作成手順(標準の同期受付(Webサービス・SOAP通信基盤))

[図データ]

各工程の作業を次に示します。

〈この項の構成〉

(1) WSDLの取得

WSDLの取得方法は,標準の同期受付(Webサービス)に要求を出す,通常のサービスリクエスタを作成する場合と同じです。

なお,サービス部品の呼び出し用の処理と,稼働状態確認用の処理で,WSDLを使い分ける必要はありません。

WSDLの取得方法については,「9.2.2 WSDLを取得する」を参照してください。

(2) スタブの生成

スタブの生成方法は,標準の同期受付(Webサービス)に要求を出す,通常のサービスリクエスタを作成する場合と同様に,サービスプラットフォームが開発支援コマンドとして提供するWSDL2Javaコマンドで生成します。

スタブの生成については,「9.2.3 スタブを生成する」を参照してください。

(3) オブジェクトの生成

サービスアダプタの稼働状況確認を要求するメソッドを呼び出すためのオブジェクトを生成する手順を次に示します。

  1. サービス部品のインターフェースクラスであるCSCMsgSyncServiceDeliveryWSImplServiceLocatorクラスのオブジェクトを生成します。

    (例)
    CSCMsgSyncServiceDeliveryWSImplServiceLocator locator
                 = new CSCMsgSyncServiceDeliveryWSImplServiceLocator();
  2. サービス部品のインターフェースクラスのオブジェクトを使用して,サービスリクエスタのインターフェースクラスであるCSCMsgSyncServiceDeliveryWSImpl.javaクラスのオブジェクトを生成します。

    なお,生成・取得したサービスリクエスタのインターフェースクラスのインスタンスは,複数のスレッドで共有できません。

    (例)
    CSCMsgSyncServiceDeliveryWSImpl ws = null;
    try {
          ws = locator.getCSCMsgSyncServiceDeliveryWSImpl();
    }catch (ServiceException e) {
                  e.printStackTrace();
                  return;
    }

    サービス部品への接続先は,WSDL定義内のService要素のaddress子要素であるlocation属性となります。サービスリクエスタのプログラム内で,サービス部品への接続先情報を取得する場合は,次のように記述します。

    (例)
    String url = locator.getCSCMsgSyncServiceDeliveryWSImplAddress();
  3. 生成した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サービス)にサービスアダプタの稼働状況確認を要求するサービスリクエスタの場合に設定するパラメタの詳細を次に示します。

表9‒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オプションに指定する内容によって異なります。応答電文で取得できる情報を次に示します。

表9‒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"を指定した場合は,この情報は取得しません。

  • 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 エラー情報を取得する」を参照してください。

エラーになる主な要因として,次の場合が挙げられます。