6.10 トランザクション参加側としてのORDSアプリケーションの開発
この項では、Oracle Databaseサンプル・アプリケーションをデプロイして実行するというコンテキストで、データベース・アプリケーションをXA参加側として構成する詳しいステップを説明します。
MicroTxを使用したトランザクションにおいて、Oracle Databaseアプリケーションをトランザクション参加側として構成できます。Oracle ApexおよびOracle REST Data Services (ORDS)を使用して構築したOracle Databaseアプリケーションは、XAトランザクション参加側としてのみサポートされます。
データベース・アプリケーションは、Oracle Databaseを使用するOracle APEXおよびORDSのアプリケーションです。データベース・アプリケーションを実行できるのは、Oracle Cloud Infrastructureの管理対象APEXサービス、KubernetesクラスタにデプロイされたOracle RADスタック、あるいはVMまたは物理ホスト内にデプロイされたOracle RADスタックです。Oracle RADスタックは、Oracle REST Data Services (ORDS)、Oracle APEXおよびOracle Databaseの3つのコア・コンポーネントに基づいた包括的テクノロジ・スタックです。
- 前提条件
- SQL用のMicroTxライブラリの実行
XA向けMicroTxライブラリ(PL/SQL)には、MicroTxによって調整されるXAトランザクションにOracle Databaseアプリケーションが参加するための一連の関数およびストアド・プロシージャが用意されています。 - ORDSアプリケーションの構築
- XAトランザクションの実行
XAサンプル・アプリケーションを例として使用して、XAトランザクションを実行する方法を説明します。
親トピック: XAでのアプリケーションの開発
6.10.1 前提条件
開始する前に、次のタスクを完了してください。
- Oracle REST Data Services (ORDS)、Oracle APEXおよびOracle Databaseで構成される作業スタックを作成するか指定します。このスタックは、MicroTxが実行されるのと同じKubernetesクラスタで実行することも、他の環境で実行することもできます。
- 同じKubernetesクラスタにデプロイしない場合は、MicroTxとデータベース・アプリケーションの間にネットワーク・アクセスまたは接続があることを確認します。
- Oracle Databaseで既存のスキーマを使用するか、新しいスキーマを作成します。スキーマをORDSに登録していることを確認します。https://docs.oracle.com/en/database/oracle/application-express/21.1/aeutl/accessing-RESTful-services.htmlを参照してください。
- ORDSサービスが登録したスキーマで使用できることを確認します。たとえば、
http://localhost:50080/ords
です。スキーマのユーザー資格証明を使用してAPEXワークスペースにログインします。 -
アクセス制御リスト(ACL)を作成して権限を追加します(デフォルトではアウトバウンドRESTコールが許可されない場合)。
MicroTxライブラリは、参加側サービスをXAトランザクションに登録するためのMicroTxトランザクション・コーディネータへのアウトバウンドRESTコールを行います。
必要なACLを作成し、データベースに追加します。ACLを追加するには、
sysdba
権限が必要です。次に、ACLの例を示します。必要なACLの追加の詳細は、APEXのドキュメントを参照してください。/ BEGIN DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE( host => '#TMM_HOST_NAME', lower_port => null, upper_port => null, ace => xs$ace_type(privilege_list => xs$name_list('connect', 'resolve', 'http'), principal_name => '#PRINCIPAL_NAME', principal_type => xs_acl.ptype_db)); END; /
ここでは、次の値を、環境に固有の値に置き換える必要があります。
#TMM_HOST_NAME
: ホスト名またはMicroTxの外部IPアドレスを入力します。#PRINCIPAL_NAME
APEXのプリンシパル・ユーザーの名前を入力します。
6.10.2 SQL用のMicroTxライブラリの実行
XA向けMicroTxライブラリ(PL/SQL)には、MicroTxによって調整されるXAトランザクションにOracle Databaseアプリケーションが参加するための一連の関数およびストアド・プロシージャが用意されています。
6.10.3 ORDSアプリケーションの構築
TmmStart
関数を使用すると、XAトランザクションをMicroTxで調整できます。MicroTxに対してRESTコールを行い、XAトランザクションに参加側を登録し、コールバックREST APIを登録します。
TmmStart
関数からオブジェクトが返され、属性proceed
が提供されます。これは、TmmStart
関数が正常に実行されたかどうか、トランザクションを先に進められるかどうかを示します。
Proceedの値 | 意味 |
---|---|
0 | XAトランザクション内でTmmStart 関数がコールされましたが、XAの初期化は成功しませんでした。つまり、アプリケーション・コードでXAトランザクションを進めることはできません。
|
1 | XAトランザクション内でTmmStart 関数がコールされ、XAの初期化が成功しました。つまり、アプリケーション・コードでXAトランザクションを進める必要があります。
|
2 | MicroTx XAトランザクションがなく、ローカル・トランザクション内で関数が実行されています。つまり、アプリケーション・コードを通常どおりに進めます。 |
ビジネス・ロジックの実行が完了したら、TmmEnd
関数をコールします。