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

2.1.1 Currentインタフェースの機能

  データベース連携サービスで提供するCurrentインタフェースには、以下の機能があります。

  これらの機能は、CORBAのクライアントアプリケーションで使用し、C言語/C++言語/COBOL/Java言語に対応しています。また、サーバアプリケーションがアクセスするデータベースへのAPI(ApplicationProgramInterface)と共に使用します。インタフェースの詳細については、“リファレンスマニュアル(API編)”を参照してください。
  COBOLは、Windows(R)/Solarisで使用できます。


機能名

機能概要

begin

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

commit

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

rollback

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

rollback_only

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

get_status

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

get_transaction_name

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

set_timeout

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

get_control

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

suspend

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

resume

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


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

  新しくトランザクションを開始するためには、begin機能を使用します。基本操作は、その後、サーバアプリケーションを呼び出し、復帰後、commit機能またはrollback機能を使用してトランザクションを完了させます。



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

  トランザクションIDを取得するget_transaction_name機能、およびトランザクションの状態を取得するget_status機能は、アプリケーションでトランザクションを監視するような保守機能として使用します。なお、トランザクションIDは、データベース連携サービスで一意な文字列になるように割り当てられます。



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

  クライアントアプリケーションでトランザクションのタイムアウトを設定する場合、set_timeout機能を使用します。
  set_timeout機能は、クライアントアプリケーションがbegin機能を使用してから、commit機能/rollback機能を使用するまでの間の時間を監視し、設定時間内にトランザクションの完了機能が使用されなかった場合にタイムアウトを検出します。この場合、データベース連携サービスが自動的に該当トランザクションをrollbackします。
  クライアントアプリケーションでタイムアウト時間を設定しない場合は、configファイルに設定したタイムアウト時間(パラメタ“TRAN_TIME_OUT”の設定値)が有効となります。クライアントアプリケーションでタイムアウト値を設定した場合は、その値が有効となります。なお、begin機能の使用後に、set_timeout機能を使用して設定したタイムアウト値は、そのトランザクションには反映されません。次のトランザクション生成時に反映されます。
  configファイルの格納パスを以下に示します。
注)本製品のインストールパスがデフォルトの場合のパスです。

C:\Interstage\ots\etc\config

/opt/FSUNots/etc/config

/opt/FJSVots/config

  たとえば、タイムアウト時間に30秒を設定し、サーバアプリケーションでの処理に時間を要したため、トランザクションが完了するまでに30秒を超過した場合の流れを以下に示します。



Controlオブジェクトの取得

  トランザクションは、トランザクションコンテキストとして管理されます。このトランザクションコンテキストを管理するのが、データベース連携サービスが生成、制御しているControlオブジェクトです。Controlオブジェクトを取得するには、get_control機能を使用します。取得したControlオブジェクトを使用して、通常データベース連携サービスが、暗黙に行っているリソースのトランザクションへの操作をアプリケーションで行うことができます。詳細な使用方法については、“2.4 その他のインタフェース”を参照してください。


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

  データベース連携サービスは、データベース連携サービスによって提供されるオブジェクトを使用して、トランザクションコンテキストの管理・伝搬を行います。クライアントアプリケーションからbegin機能を使用すると、暗黙的にトランザクションコンテキストがOTSシステムからクライアントアプリケーションに伝搬されます。その後、クライアントアプリケーションが、サーバアプリケーションを呼び出す契機で、サーバアプリケーションまで暗黙に伝搬されます。

  クライアントアプリケーションがControlオブジェクトを取得し、サーバアプリケーションのオペレーションのパラメタとしてこのControlオブジェクトを指定することで、暗黙的に伝搬されていたトランザクションコンテキストを明示的に伝搬することができます。サーバアプリケーションは、パラメタとして渡されたControlオブジェクトを使用して、トランザクションの同期処理(Synchronizationインタフェース)やCurrentインタフェースで提供される機能と同一機能(Coordinatorインタフェース)を使用することができるようになります。これらの機能を使用することで、通常データベース連携サービスが行っているトランザクションの管理、制御をアプリケーションが行うことになるため、使用する場合はアプリケーションで、トランザクションのインテグリティを保証する設計が必要になります。SynchronizationインタフェースおよびCoordinatorインタフェースについては、“2.4 その他のインタフェース”を参照してください。


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

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

注意

  グローバルトランザクションに参加するリソースにアクセスするサーバアプリケーション、およびローカルトランザクションのリソースにアクセスするサーバアプリケーションは、同じプロセス内のオブジェクトとして作成しないでください。



  suspend機能のオペレーションの復帰にControlオブジェクトが返却されるため、そのControlオブジェクトをresume機能のオペレーションのパラメタとして指定します。