Interstage Application Server アプリケーション作成ガイド (データベース連携サービス編) |
目次 索引 |
第2章 分散トランザクション機能の使用方法 | > 2.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を取得するget_transaction_name機能と、トランザクションの状態を取得するget_status機能は、アプリケーションでトランザクションを監視するような保守機能として使用します。なお、トランザクションIDは、データベース連携サービスで一意な文字列になるように割り当てられます。
トランザクションのタイムアウトをクライアントアプリケーションで設定する場合にset_timeout 機能を使用します。
set_timeout 機能は、クライアントアプリケーションがbegin機能を使用してから、commit機能あるいはrollback機能を使用するまでの間の時間を監視し、設定した時間内にトランザクションの完了機能が使用されない場合にタイムアウトを検出します。この場合、データベース連携サービスが自動的に該当トランザクションをrollbackします。クライアントアプリケーションでタイムアウト時間を設定しない場合は、configファイル内のTRAN_TIME_OUTパラメタに指定されている値を有効とします。クライアントアプリケーションでタイムアウト値を設定した場合は、その値が有効になります。なお、begin機能使用後にset_timeout機能を使用して設定したタイムアウト値は、その該当トランザクションには反映されません。次にトランザクションを生成した場合に反映されます。
configファイルは以下のものです。
以下は、タイムアウト時間を30秒と設定し、サーバアプリケーションでの処理に時間がかかり、トランザクションを完了するまでに30秒を超過した場合の例です。
トランザクションは、トランザクションコンテキストとして管理され、このトランザクションコンテキストを管理するのが、データベース連携サービスが生成、制御しているControlオブジェクトです。Controlオブジェクトを取得するには、get_control機能を使用します。取得したControlオブジェクトを使用して、通常データベース連携サービスが、暗黙に行っているリソースのトランザクションへの操作をアプリケーションで行うことができます。詳細な使用方法は、“その他のインタフェース”を参照してください。
データベース連携サービスは、データベース連携サービスによって提供されるオブジェクトを用いて、トランザクションコンテキストの管理と伝搬を行っています。クライアントアプリケーションからbegin機能を使用すると、暗黙的にトランザクションコンテキストがOTSシステムからクライアントアプリケーションに伝搬されます。その後、クライアントアプリケーションが、サーバアプリケーションを呼び出す契機で、サーバアプリケーションまで暗黙に伝搬されます。
クライアントアプリケーションがControlオブジェクトを取得し、サーバアプリケーションのオペレーションのパラメタとしてこのControlオブジェクトを指定することで、暗黙的に伝搬されていたトランザクションコンテキストを明示的に伝搬することができます。サーバアプリケーションは、パラメタとして渡されたControlオブジェクトを使用して、トランザクションの同期処理(Synchronizationインタフェース)やCurrentインタフェースで提供される機能と同一機能(Coordinatorインタフェース)を使用することができるようになります。これらの機能を使用することで、通常データベース連携サービスが行っているトランザクションの管理、制御をアプリケーションが行うことになるため、使用する場合にはアプリケーションで、トランザクションのインテグリティを保証する設計が必要になります。SynchronizationインタフェースとCoordinatorインタフェースについては、“その他のインタフェース”を参照してください。
トランザクションを制御するアプリケーションが、生成したトランザクションの処理を一時的に停止し、グローバルトランザクションでない、たとえば、ローカルなトランザクションとしての処理を行うような場合、suspend機能を使用します。また、一時的に停止したトランザクションを再開するには、resume機能を使用します。
なお、グローバルトランザクションに参加するリソースにアクセスするサーバアプリケーションとローカルトランザクションのリソースにアクセスするサーバアプリケーションを同じプロセス内のオブジェクトとしては作成しないでください。
suspend機能のオペレーションの復帰にControlオブジェクトが返却されるため、そのControlオブジェクトをresume機能のオペレーションのパラメタとして指定します。
目次 索引 |