Hitachi

Hitachi Microservices Platform - Paxos Commit Transaction Orchestrator ユーザーズガイド


2.2.13 TP1-Bridgeの使用(通常版かつTP1-Bridge限定)

TP1-Bridgeを使用するアプリケーションの開発方法について説明します。

TP1-Bridgeの機能を使用する処理は、OrchestratorおよびEntity-Serviceのアプリケーションで実装してください。

TP1-Bridgeを使用する場合は、OpenTP1のSPPに接続するためのサービスグループ名とサービス名、およびOpenTP1のSPPへの要求電文となるJSON形式のデータが必要です。

TP1-Bridgeを使用するためには、org.springframework.web.client.RestTemplateクラスを使用してTP1-Bridgeを呼び出します。

TP1-Bridgeを呼び出す前提として、トランザクションを伝搬する処理の実装が必要です。TP1-Bridgeを呼び出すために必要なHMP-PCTOのライブラリは、トランザクションの伝搬で必要なライブラリに含まれています。

〈この項の構成〉

(1) コーディング例

サービスグループ名とサービス名は、TP1-Bridgeに通信するためのURLのパスに設定します。

次に示す形式で設定してください。

http://<TP1-Bridgeのホスト名>:<TP1-Bridgeのポート番号>/tp1bridge/<サービスグループ名>/<サービス名>

JSONデータは、TP1-Bridgeに通信する要求電文のBodyに設定してください。また、要求電文はPOSTで送信してください。

String url = "http://xxxx:xxxx/tp1bridge/serviceg1/service1";     // TP1-BridgeのURLとサービスグループ名サービス名を用意
 
RestTemplate restTemplate = new RestTemplate();                 // RestTemplateのインスタンス作成
String jsonData = "{\"Data1\":\"AAAA\",\"Data2\":\"BBBB\"}";    // String型のJsonデータを用意
RequestEntity.BodyBuilder rb = RequestEntity.post(url);         // TP1-BridgeのURL設定
RequestEntity<?> request = rb.body(jsonData);                   // JsonデータをBodyに設定
ResponseEntity<?> response = restTemplate.exchange(request, String.class); // 通信実行
String responseBody = response.getBody();                       // 応答電文のJsonデータをBody部から取り出し

この例では、インタセプタの登録(トランザクションの伝搬)に関する記述を省略しています。

(2) エラーハンドリング

RestTemplateを使用した通信で例外が発生した場合は、RestTemplateが送出する例外、例外のメッセージ、およびステータスコードを参照してください。

HMP-PCTOが送出するstatuscodeについては、取扱説明書「HMP-PCTO テクニカルガイド」のTP1-Acceptorの機能のHTTPステータスマッピングに関する説明を参照してください。

(3) JSONの形式に関する注意事項

TP1-Bridgeは、JSON形式のデータをバイナリ形式に変換する際に、uCosminexus Service PlatformのJSON-XML変換APIを使用します。そのため、TP1-Bridgeを使用する際のJSON形式のデータは、uCosminexus Service PlatformのJSON-XML変換APIの仕様が定める形式としてください。

JSON形式の詳細については、マニュアル「Cosminexus BPM/ESB基盤 サービスプラットフォーム 開発ガイド 基本開発編」の、JSON-XML変換で扱うJSONと標準仕様のJSONとの差異に関する説明を参照してください。