ページの先頭行へ戻る
Interstage Application Server V13.0.0 アプリケーション作成ガイド(データベース連携サービス編)
FUJITSU Software

1.4.1 Currentインタフェース

Currentインタフェースは、CORBA規約で規定されたトランザクションを制御するインタフェースです。

データベース連携サービスで提供するCurrentインタフェースには、以下の機能があります。
本機能は、CORBAクライアントアプリケーションにおいて、サーバアプリケーションがアクセスするデータベースへのAPI(Application Program Interface)と一緒に使用します。インタフェースの詳細については、「リファレンスマニュアル(API編)」を参照してください。


機能名

対応言語

機能概要

begin

  • C

  • Java

トランザクションを新しく生成し、開始します。クライアントのスレッドとトランザクションを関連付けます。

commit

スレッドに対応付けられた該当トランザクションをcommit完了します。

rollback

スレッドに対応付けられた該当トランザクションをrollback完了します。

rollback_only

該当トランザクションをrollbackにだけ可能な状態にします。

get_status

トランザクションの状態を取得します。

get_transaction_name

トランザクションIDを取得します。

set_timeout

トランザクションのタイムアウトを設定します。

get_control

該当トランザクションを管理するコントロールオブジェクトを取得します。

suspend

スレッドに対応付けられた該当トランザクションをいったん切り離します。

resume

スレッドとトランザクションを対応付けます。


■トランザクションの開始/完了

トランザクションの開始/完了の基本操作を以下に示します。

  1. begin機能を使用してトランザクションを開始します。

  2. サーバアプリケーションを呼び出します。

  3. 2.の復帰後、commit機能/rollback機能を使用してトランザクションを完了します。



■トランザクションIDの取得トランザクションの状態取得

アプリケーションにおいてトランザクションを監視するための保守機能として以下の機能を使用します。

■トランザクションタイムアウトの設定

クライアントアプリケーションにおいてトランザクションのタイムアウトを設定する場合、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 その他のインタフェース」を参照してください。


■トランザクションコンテキストの管理と伝搬

データベース連携サービスは、提供しているオブジェクトを使用して、トランザクションコンテキストの管理/伝搬を行っています。

トランザクションコンテキストの伝搬の処理を以下に示します。

  1. クライアントアプリケーションにおいて、begin機能によりトランザクションを開始すると、OTSシステムからクライアントアプリケーションにトランザクションコンテキストが伝搬されます。

  2. クライアントアプリケーションにおいて、Controlオブジェクトを取得し、サーバアプリケーションのオペレーションのパラメタにこのControlオブジェクトを指定してサーバアプリケーションを呼び出すと、クライアントアプリケーションからサーバアプリケーションにトランザクションコンテキストが伝搬されます。

  3. サーバアプリケーションでは、パラメタとして渡されたControlオブジェクトにより、Synchronizationインタフェース(トランザクションの同期処理)/Coordinatorインタフェース(Currentインタフェースで提供される機能と同一機能)の使用が可能となります。

これらの機能により、アプリケーションにおいて、通常、データベース連携サービスが行っているトランザクションの管理/制御を行うことできるようになるため、使用時はアプリケーションにおいてトランザクションのインテグリティを保証するように設計してください。なお、SynchronizationインタフェースおよびCoordinatorインタフェースの詳細については、「1.4.3 その他のインタフェース」を参照してください。


■トランザクションの一時停止再開

トランザクションを制御しているアプリケーションにおいて、生成したトランザクションの処理を一時的に停止して、グローバルトランザクションではなくローカルなトランザクションとして処理するような場合に、suspend機能を使用します。また、一時的に停止したトランザクションを再開する場合は、resume機能を使用します。

トランザクションの一時停止/再開の処理を以下に示します。

  1. suspend機能のオペレーションを呼び出すと、復帰値としてControlオブジェクトが返却されます。

  2. 1.で返却されたControlオブジェクトをresume機能のオペレーションのパラメタとして指定します。



注意

以下の2つのアプリケーションは、同じプロセス内のオブジェクトとして作成しないでください。

  • グローバルトランザクションに参加するリソースにアクセスするサーバアプリケーション

  • ローカルトランザクションのリソースにアクセスするサーバアプリケーション