ここでは、HTTPパラメタ伝送によりISIの共通メッセージへマッピングされたHTTPメッセージの情報を参照、加工する方法について説明します。
インバウンドHTTPアダプタで受信したHTTPメッセージは、以下の共通メッセージのヘッダにマッピングされます。また、アウトバウンドHTTPアダプタで送信するHTTPメッセージも、サービスエンドポイントの定義に伝送をする設定を行った場合は、以下のヘッダの値を利用します。
ISI共通メッセージのヘッダキー | 対応するHTTPメッセージの情報 |
---|---|
com.fujitsu.esi.http.request.method | HTTPメソッド |
com.fujitsu.esi.http.request.resourcepath | リソースパス |
com.fujitsu.esi.http.request.header.<HTTPヘッダのfield-name> | HTTPヘッダ |
アウトバウンドHTTPアダプタの応答メッセージは、以下の共通メッセージのヘッダにマッピングされます。また、インバウンドHTTPアダプタで応答するHTTPメッセージも、サービスエンドポイントの定義に伝送をする設定を行った場合は、以下のヘッダの値を利用します。
ISI共通メッセージのヘッダキー | 対応するHTTPメッセージの情報 |
---|---|
com.fujitsu.esi.http.response.status | ステータスコード |
com.fujitsu.esi.http.response.header.<HTTPヘッダのfield-name> | HTTPヘッダ |
メディエータファンクションのユーザプログラムでは、上記共通メッセージの情報を参照、加工することができます。
特定の共通メッセージのヘッダを参照、加工する場合は、ユーザプログラムへ受け渡すパラメタの型や復帰値の型に、基本データ型、基本データ型のラッパクラス、String型を指定してください。
複数の共通メッセージのヘッダをまとめて参照、設定する場合や、ヘッダを削除する場合は、共通メッセージをパラメタとして受け渡します。
共通メッセージをパラメタとして受け渡す場合のユーザプログラムについて以下に説明します。
共通メッセージのヘッダキーの定数
ユーザプログラムの作成を容易にするために、ヘッダキーを以下のcom.fujitsu.esi.message.ESIHeaderConstantsクラスのフィールドとして定義されています。
ISI共通メッセージのヘッダキー | ESIHeaderConstantsクラスのフィールド名 |
---|---|
com.fujitsu.esi.http.request.method | ESI_HEADER_KEY_HTTP_REQUEST_METHOD |
com.fujitsu.esi.http.request.resourcepath | ESI_HEADER_KEY_HTTP_REQUEST_RESOURCE_PATH |
com.fujitsu.esi.http.request.header | ESI_HEADER_KEY_HTTP_REQUEST_HEADER |
com.fujitsu.esi.http.response.status | ESI_HEADER_KEY_HTTP_RESPONSE_STATUS |
com.fujitsu.esi.http.response.header | ESI_HEADER_KEY_HTTP_RESPONSE_HEADER |
共通メッセージのヘッダの操作インタフェース
共通メッセージのヘッダ情報の取得・設定・削除には、ISIが提供するクラスのメソッドを使用します。提供するメソッド一覧は以下の通りです。
クラス名 | メソッド情報 | ||
---|---|---|---|
復帰値 | メソッド名 | 説明 | |
ESIMessage | ESIHeader | getHeader() | 共通メッセージのヘッダ情報を取得する。 |
ESIHeader | ESIParameter | getParameter() | ヘッダが持つパラメタ情報を取得する。 |
ESIParameter | java.lang.String | get(java.lang.String key) | 指定したキーに該当するヘッダ情報の値を取得する。キーに該当するヘッダ情報がない場合、nullを返す。 |
void | put(java.lang.String key, java.lang.String value) | 指定したキーに値を設定する。 | |
java.lang.String | remove(java.lang.String key) | 指定したキーに該当するヘッダ情報を削除する。キーに該当するヘッダ情報がある場合、キーに関連付けられていた値を返す。キーに該当するヘッダ情報がない場合、nullを返す。 |
共通メッセージのヘッダ情報の取得
共通メッセージのヘッダ情報を取得する場合、ESIParameter#get()メソッドを使用します。
例えば、ヘッダキー“com.fujitsu.esi.http.response.status”の値を取得するプログラムは以下のようになります。
実装例:受け取った共通メッセージ(ESIMessage message)に対するヘッダ情報の取得
import com.fujitsu.esi.message.ESIMessage; import com.fujitsu.esi.message.ESIHeader; import com.fujitsu.esi.message.ESIParameter; import com.fujitsu.esi.message.ESIHeaderConstants; (~略~) public void referHeader(ESIMessage message) { ESIParameter parameter = message.getHeader().getParameter(); String value = parameter.get(ESIHeaderConstants.ESI_HEADER_KEY_HTTP_RESPONSE_STATUS);
共通メッセージのヘッダ情報の設定
共通メッセージのヘッダ情報を設定する場合、ESIParameter#put()メソッドを使用します。
例えば、ヘッダキー“com.fujitsu.esi.http.request.resourcepath”に値を設定するプログラムは以下のようになります。
実装例:受け取った共通メッセージ(ESIMessage message)に対するヘッダ情報の設定
import com.fujitsu.esi.message.ESIMessage; import com.fujitsu.esi.message.ESIHeader; import com.fujitsu.esi.message.ESIParameter; import com.fujitsu.esi.message.ESIHeaderConstants; (~略~) public ESIMessage updateHeader(ESIMessage message) { ESIParameter parameter = message.getHeader().getParameter(); parameter.put(ESIHeaderConstants.ESI_HEADER_KEY_HTTP_REQUEST_RESOURCE_PATH,"/aaa/bbb/ccc");
共通メッセージのヘッダ情報の削除
共通メッセージのヘッダ情報を削除する場合、ESIParameter#remove()メソッドを使用します。
例えば、ヘッダキー“com.fujitsu.esi.http.request.header.connection”を削除するプログラムは以下のようになります。
実装例:受け取った共通メッセージ(ESIMessage message)に対するヘッダ情報の削除
import com.fujitsu.esi.message.ESIMessage; import com.fujitsu.esi.message.ESIHeader; import com.fujitsu.esi.message.ESIParameter; import com.fujitsu.esi.message.ESIHeaderConstants; (~略~) public ESIMessage deleteHeader(ESIMessage message) { ESIParameter parameter = message.getHeader().getParameter(); parameter.remove(ESIHeaderConstants.ESI_HEADER_KEY_HTTP_REQUEST_HEADER+".connection");