Currentインタフェースは、CORBA規約で規定されたトランザクションを制御するインタフェースです。
データベース連携サービスで提供するCurrentインタフェースには、以下の機能があります。
本機能は、CORBAクライアントアプリケーションにおいて、サーバアプリケーションがアクセスするデータベースへのAPI(Application Program Interface)と一緒に使用します。インタフェースの詳細については、「リファレンスマニュアル(API編)」を参照してください。
機能名 | 対応言語 | 機能概要 |
---|---|---|
begin |
| トランザクションを新しく生成し、開始します。クライアントのスレッドとトランザクションを関連付けます。 |
commit | スレッドに対応付けられた該当トランザクションをcommit完了します。 | |
rollback | スレッドに対応付けられた該当トランザクションをrollback完了します。 | |
rollback_only | 該当トランザクションをrollbackにだけ可能な状態にします。 | |
get_status | トランザクションの状態を取得します。 | |
get_transaction_name | トランザクションIDを取得します。 | |
set_timeout | トランザクションのタイムアウトを設定します。 | |
get_control | 該当トランザクションを管理するコントロールオブジェクトを取得します。 | |
suspend | スレッドに対応付けられた該当トランザクションをいったん切り離します。 | |
resume | スレッドとトランザクションを対応付けます。 |
■トランザクションの開始/完了
トランザクションの開始/完了の基本操作を以下に示します。
begin機能を使用してトランザクションを開始します。
サーバアプリケーションを呼び出します。
2.の復帰後、commit機能/rollback機能を使用してトランザクションを完了します。
■トランザクションIDの取得/トランザクションの状態取得
アプリケーションにおいてトランザクションを監視するための保守機能として以下の機能を使用します。
get_transaction_name機能
トランザクションIDを取得する機能です。なお、トランザクションIDは、データベース連携サービスで一意な文字列になるように割り当てられます。
get_status機能
トランザクションの状態を取得する機能です。
■トランザクションのタイムアウトの設定
クライアントアプリケーションにおいてトランザクションのタイムアウトを設定する場合、set_timeout機能を使用します。
本機能は、クライアントアプリケーションがbegin機能でトランザクションを開始してから、commit機能/rollback機能でトランザクションを完了させるまでの時間を監視し、タイムアウトとして設定した時間内にトランザクションが完了しなかった場合にタイムアウトとして検出します。この場合、データベース連携サービスは自動的に該当トランザクションをrollbackします。
なお、クライアントアプリケーションにおいてタイムアウト時間を設定しない場合は、以下のconfigファイルに設定したタイムアウト時間(パラメタ「TRAN_TIME_OUT」の設定値)が有効となります。
(インストールパスはデフォルト)
C:\Interstage\ots\etc\config
(インストールパスはデフォルト)
/opt/FSUNots/etc/config
/opt/FJSVots/config
注意
begin機能でトランザクションを開始した後に、set_timeout機能によりタイムアウト時間を設定した場合、そのトランザクションには反映されません。次にトランザクションを生成した場合に反映されます。
ポイント
サーバアプリケーションの処理に時間を要したために、トランザクションが完了するまでにタイムアウト時間の設定値「30秒」を超過してしまった場合の処理の流れを以下に示します。
■Controlオブジェクトの取得
トランザクションは、トランザクションコンテキストとして管理されます。このトランザクションコンテキストは、データベース連携サービスが生成/制御を行っているControlオブジェクトにより管理できます。アプリケーションにおいてget_control機能でControlオブジェクトを取得することにより、通常、データベース連携サービスが暗黙で行っているリソースのトランザクションを操作することができます。詳細な使用方法については、「1.4.3 その他のインタフェース」を参照してください。
■トランザクションコンテキストの管理と伝搬
データベース連携サービスは、提供しているオブジェクトを使用して、トランザクションコンテキストの管理/伝搬を行っています。
トランザクションコンテキストの伝搬の処理を以下に示します。
クライアントアプリケーションにおいて、begin機能によりトランザクションを開始すると、OTSシステムからクライアントアプリケーションにトランザクションコンテキストが伝搬されます。
クライアントアプリケーションにおいて、Controlオブジェクトを取得し、サーバアプリケーションのオペレーションのパラメタにこのControlオブジェクトを指定してサーバアプリケーションを呼び出すと、クライアントアプリケーションからサーバアプリケーションにトランザクションコンテキストが伝搬されます。
サーバアプリケーションでは、パラメタとして渡されたControlオブジェクトにより、Synchronizationインタフェース(トランザクションの同期処理)/Coordinatorインタフェース(Currentインタフェースで提供される機能と同一機能)の使用が可能となります。
これらの機能により、アプリケーションにおいて、通常、データベース連携サービスが行っているトランザクションの管理/制御を行うことできるようになるため、使用時はアプリケーションにおいてトランザクションのインテグリティを保証するように設計してください。なお、SynchronizationインタフェースおよびCoordinatorインタフェースの詳細については、「1.4.3 その他のインタフェース」を参照してください。
■トランザクションの一時停止/再開
トランザクションを制御しているアプリケーションにおいて、生成したトランザクションの処理を一時的に停止して、グローバルトランザクションではなくローカルなトランザクションとして処理するような場合に、suspend機能を使用します。また、一時的に停止したトランザクションを再開する場合は、resume機能を使用します。
トランザクションの一時停止/再開の処理を以下に示します。
suspend機能のオペレーションを呼び出すと、復帰値としてControlオブジェクトが返却されます。
1.で返却されたControlオブジェクトをresume機能のオペレーションのパラメタとして指定します。
注意
以下の2つのアプリケーションは、同じプロセス内のオブジェクトとして作成しないでください。
グローバルトランザクションに参加するリソースにアクセスするサーバアプリケーション
ローカルトランザクションのリソースにアクセスするサーバアプリケーション