CORBAプログラミング・リファレンス

     前  次    新規ウィンドウで目次を開く  新規ウィンドウで索引を開く  PDFとして表示 - 新規ウィンドウ  Adobe Readerを取得 - 新規ウィンドウ
コンテンツはここから始まります

CORBAブートストラップ処理のプログラミング・リファレンス

ここでは、以下の内容について説明します。

注意: Oracle Tuxedo CORBA JavaクライアントとOracle Tuxedo CORBA JavaクライアントORBはTuxedo 8.1で非推奨になり、Tuxedo 9.xではサポートされなくなりました。 Oracle Tuxedo CORBA JavaクライアントとOracle Tuxedo CORBA JavaクライアントORBのすべてのテキスト・リファレンスや関連するサンプル・コードは、以下の場合にのみ使用してください。
注意: サード・パーティのCORBA Java ORBのテクニカル・サポートは、各ベンダーによって提供されます。Oracle Tuxedoでは、サード・パーティのCORBA Java ORBに関する技術的なサポートやマニュアルは提供していません。

 


ブートストラップ処理が必要な理由

クライアント・アプリケーションがOracle Tuxedoオブジェクトと通信するためには、オブジェクト参照を取得する必要があります。オブジェクト参照がないと、通信はできません。この問題を解決するために、クライアント・アプリケーションではブートストラップ処理メカニズムを使用してOracle Tuxedoドメインのオブジェクトのオブジェクト参照を取得します。

 


サポートされているブートストラップ処理メカニズム

リリース8.0以降のTuxedoでは、2つのブートストラップ処理メカニズムがサポートされます。

注意: Oracle Tuxedoソフトウェアに付属のCORBA C++クライアントでは、Interoperable Naming Serviceのブートストラップ処理メカニズムを使用できますが、パフォーマンス上の理由により推奨はできません。

 


Oracleブートストラップ処理メカニズム

Oracleブートストラップ処理メカニズムでは、Bootstrapオブジェクトを使用します。Bootstrapオブジェクトは、クライアントとサーバー両方の(リモートCORBAオブジェクトではなく)ローカル・プログラミング・オブジェクトです。Bootstrapオブジェクトが作成されるとき、そのコンストラクタはOracle Tuxedo IIOPリスナー/ハンドラのネットワーク・アドレスを必要とします。その情報が提供されると、ブートストラップ処理オブジェクトではOracle Tuxedoドメインの主要なリモート・オブジェクトのオブジェクト参照を生成できます。それらのオブジェクト参照は、Oracle Tuxedoドメインで利用可能なサービスにアクセスするために使用できます。

Bootstrapオブジェクトの機能

Bootstrapオブジェクトは、次のOracle Tuxedo CORBAインタフェースのオブジェクト参照にアクセスする必要のあるクライアントまたはサーバー・アプリケーションによって作成されます。

Bootstrapオブジェクトは、IIOPリスナー/ハンドラのアドレスの形式によっては特定のOracle Tuxedoドメインへの最初の接続を表す場合があります。NULLスキームUniversal Resource Locator (URL)形式が使用される場合に(バージョン5.1以前のOracle WebLogic EnterpriseリリースとOracle Tuxedoリリース8.0でサポートされている唯一のアドレス形式)、Bootstrapオブジェクトは最初の接続を表します。ただし、このURL形式が使用される場合は、Bootstrapオブジェクトが作成されるまで接続は行われません。アドレス形式と接続回数の詳細は、「Tobj_Bootstrap」を参照してください。

Oracle Tuxedo CORBAリモート・クライアントについては、BootstrapオブジェクトはOracle Tuxedo IIOPリスナー/ハンドラのホストとポートを使用して作成されます。しかし、Oracle Tuxedoネイティブのクライアント・アプリケーションとサーバー・アプリケーションでは、ホストとポートを指定する必要はありません(特定のOracle Tuxedoドメインで実行されるため)。IIOPリスナー/ハンドラのホストとポートIDは、Oracle Tuxedoドメインの構成情報に含まれています。

Bootstrapオブジェクトは、その作成後に、特定のOracle Tuxedoドメインにあるオブジェクトのオブジェクト参照に対するリクエストを満たします。異なるBootstrapオブジェクトを使用すると、アプリケーションで複数のドメインを使用できます。

Bootstrapオブジェクトを使用すると、次のオブジェクトのオブジェクト参照を取得できます。

FactoryFinderオブジェクトとインタフェース・リポジトリ・オブジェクトは、環境オブジェクト・ライブラリで実装されません。しかし、それらのオブジェクトはOracle Tuxedoドメインに固有であり、したがって概念的にはSecurityCurrentオブジェクトおよびTransactionCurrentオブジェクトと似ています。

Bootstrapオブジェクトは、クライアント・アプリケーションとOracle Tuxedoドメインの間の関連付け(セッション)を意味します。この関連付けのコンテキストで、BootstrapオブジェクトはほかのCurrentオブジェクト(SecurityCurrentとTransactionCurrent)との包含関係を強制します。Currentオブジェクトは、このドメインの範囲内で、Bootstrapオブジェクトが存在している間のみ有効です。

注意: 新しいURLアドレス形式(corbaloc://hostname:port_number)を使用している場合のSecurityCurrentの解決はローカルの処理です。つまり、クライアントからIIOPリスナー/ハンドラへの接続は行われません。

また、クライアントでは各Currentオブジェクトにつきインスタンスは1つしか利用できません。Currentオブジェクトが既に存在する場合でも、新たなCurrentオブジェクトの作成が失敗することはありません。失敗するのではなく、既存のオブジェクトのもう1つのリファレンスが渡されます。つまり、クライアント・アプリケーションはCurrentオブジェクトの単一インスタンスの複数のリファレンスを持つことになります。

Currentオブジェクトの新しいインスタンスを作成するには、まずBootstrapオブジェクトのdestroy_current()メソッドを呼び出す必要があります。この呼出しですべてのCurrentオブジェクトが無効になりますが、Oracle Tuxedoドメインとのセッションは破棄されません。destroy_current()を呼び出した後は、既存のBootstrapオブジェクトを使用してOracle Tuxedoドメイン内でCurrentオブジェクトの新しいインスタンスを作成できます。

別のドメインのCurrentオブジェクトを取得するには、別のBootstrapオブジェクトを作成する必要があります。同時に複数のBootstrapオブジェクトを持つこともできますが、「アクティブ」にできる(Currentオブジェクトを関連付けることができる)のは1つのBootstrapオブジェクトだけです。したがって、アプリケーションでは「アクティブ」なBootstrapオブジェクトのdestroy_current()を呼び出してから別のBootstrapオブジェクト(アクティブなBootstrapオブジェクトになる)の新しいCurrentオブジェクトを取得する必要があります。

注意: 複数のドメインのオブジェクトにアクセスする必要がある場合は、オブジェクトをローカル・ドメインにインポートするか、複数のドメインにアクセスするようにアプリケーションを構成します。マルチ・ドメイン構成の詳細は、『Oracle Tuxedo Domainsコンポーネントの使用』の「Configuring Multiple CORBA Domains」を参照してください。

サーバーとネイティブ・クライアントはOracle Tuxedoドメインの中に存在します。したがって、「セッション」は確立されません。ただし、同じ包含関係が強制されます。サーバーとネイティブ・クライアントは、//host:portではなく空の文字列を指定してそれらが含まれているドメインにアクセスします。

注意: Bootstrapオブジェクトを使用する場合、クライアント・アプリケーションとサーバー・アプリケーションではORB::resolve_initial_references()メソッドではなくTobj_Bootstrap::resolve_initial_references()メソッドを使用する必要があります。

サポートされているOracleリモート・クライアントの種類

表4-1は、Bootstrapオブジェクトを使用してほかの環境オブジェクト(FactoryFinder、SecurityCurrent、TransactionCurrent、InterfaceRepositoryなど)にアクセスできるリモート・クライアントの種類を示しています。これらのクライアントは、Oracle Tuxedo CORBAソフトウェアに付属しています。サード・パーティ製のクライアントORBでは、CORBA Interoperable Naming Serviceを使用する必要があります。

表4-1 サポートされているOracleリモート・クライアント
クライアント
説明
CORBA C++
CORBA C++クライアント・アプリケーションでは、Oracle Tuxedo C++環境オブジェクトを使用してOracle TuxedoドメインのCORBAオブジェクトにアクセスし、Oracle Tuxedoオブジェクト・リクエスト・ブローカ(ORB)を使用してCORBAオブジェクトからのリクエストを処理します。Oracle Tuxedoシステムの開発コマンドを使用すると、このタイプのクライアント・アプリケーションをビルドできます(『Oracle Tuxedoコマンド・リファレンス』を参照)。

機能と制限事項

Bootstrapオブジェクトには、以下の機能と制限があります。

 


BootstrapオブジェクトAPI

Bootstrapオブジェクト・アプリケーション・プログラミング・インタフェース(API)は、まずOMG定義言語(IDL)で記述し(移植性のため)、その後にC++で記述します。C++の記述では、特定のOracle TuxedoドメインのBootstrapオブジェクトをビルドするために必要なコンストラクタが追加されます。

Tobjモジュール

表4-2は、各IDで返されるオブジェクト参照を示しています。

表4-2 戻されるオブジェクト参照
ID
返されるオブジェクト参照(C++クライアント)
FactoryFinder
FactoryFinderオブジェクト(Tobj::FactoryFinder)
InterfaceRepository
InterfaceRepositoryオブジェクト(CORBA::Repository)
NameService
CORBAネーミング・サービス(Tobj::NameService)
NotificationService
EventChannelFactoryオブジェクト
(CosNotifyChannelAdmin::
EventChannelFactory
)
SecurityCurrent
SecurityCurrentオブジェクト(SecurityLevel2::Current)
TransactionCurrent
OTS Currentオブジェクト(Tobj::TransactionCurrent)
Tobj_SimpleEventsService
Oracleシンプル・イベント
ChannelFactoryオブジェクト(Tobj_SimpleEvents::
ChannelFactory
)

表4-3は、Tobjモジュールの例外を示しています。

表4-3 Tobjモジュールの例外
C++の例外
Javaの例外
説明
Tobj::
InvalidName
com.beasys.Tobj.
InvalidName
idが表4-2 で指定されたどの名前でもない場合に生成されます。サーバーでは、SecurityCurrentが渡された場合にもresolve_initial_referencesInvalidNameが生成されます。
Tobj::
InvalidDomain
com.beasys.Tobj.
InvalidDomain
サーバー・アプリケーションで、Oracle Tuxedoサーバー環境が起動していない場合に生成されます。
CORBA::
NO_PERMISSION
org.omg.CORBA.
NO_PERMISSION
idTransactionCurrentまたはSecurityCurrentで、クライアントの別のBootstrapオブジェクトがCurrentオブジェクトを所有している場合に生成されます。
BAD_PARAM
org.omg.CORBA.
BAD_PARAM
オブジェクトがnilである場合、またはオブジェクトに格納されているホスト名が接続と一致しない場合に生成されます。
IMP_LIMIT
org.omg.CORBA.
IMP_LIMIT
register_callback_portメソッドが複数回呼び出された場合に生成されます。

C++マッピング

リスト4-1は、Tobj_bootstrap.hファイルでのC++宣言を示しています。

リスト4-1 Tobj_boostrap.hの宣言
#include <CORBA.h>

class Tobj_Bootstrap {
public:
Tobj_Bootstrap(CORBA::ORB_ptr orb, const char* address);
CORBA::Object_ptr resolve_initial_references(
const char* id);
void register_callback_port(CORBA::Object_ptr objref);
void destroy_current( );
};

Javaマッピング

リスト4-2は、Tobj_Bootstrap.javaのマッピングを示しています。

リスト4-2 Tobj_Bootstrap.javaのマッピング
package com.beasys;

public class Tobj_Bootstrap {
public Tobj_Bootstrap(org.omg.CORBA.ORB orb,
String address)
throws org.omg.CORBA.SystemException;
public class Tobj_Bootstrap {
public Tobj_Bootstrap(org.omg.CORBA.ORB orb, String address,
java.applet.Applet applet)
throws org.omg.CORBA.SystemException;

public void register_callback_port(orb.omg.CORBA.Object objref)
throws org.omg.CORBA.SystemException;

public org.omg.CORBA.Object
resolve_initial_references(String id)
throws Tobj.InvalidName,
org.omg.CORBA.SystemException;
public void destroy_current()
throws org.omg.CORBA.SystemException;
}

オートメーション・マッピング

リスト4-3は、オートメーションBootstrapインタフェースのマッピングを示しています。

リスト4-3 オートメーション(デュアル) Bootstrapインタフェースのマッピング
interface DITobj_Bootstrap : IDispatch
{
HRESULT Initialize(
[in] BSTR address);
     HRESULT CreateObject(
[in] BSTR progid,
[out, retval] IDispatch** rtrn);
     HRESULT destroy_current();
};

C++メンバー関数

このセクションでは、Oracleブートストラップ処理メカニズムでサポートされるC++メンバー関数について説明します。

 


Tobj_Bootstrap

概要

Bootstrapオブジェクトのコンストラクタです。

C++マッピング

Tobj_Bootstrap(CORBA::ORB_ptr orb, const char* address);
throws Tobj::BAD_PARAM
org.omg.CORBA.SystemException;

パラメータ

orb

クライアントのORBオブジェクトへのポインタ。Bootstrapオブジェクトの内部では、orbstring_to_objectメソッドが使用されます。

address

Oracle TuxedoドメインのIIOPリスナー/ハンドラのアドレス。
注意: 複数のTobj_Bootstrapsで同じドメインを指定することはできません。
このアドレスは、クライアントの種類と必要なセキュリティのレベルに応じて異なる形式で指定します。クライアントには次の3種類があります。
//m1.acme:3050 //m1.acme:3050,//m2.acme:3050,//m3.acme:3051

複数のアドレスを指定すると、Oracle Tuxedoソフトウェアでは接続が確立されるまで左から右の順序でアドレスが試されます。接続が試行されているときにアドレスの構文エラーが検出されると、BAD_PARAM例外が直ちに呼出し側に返され、Oracle Tuxedoソフトウェアによって接続の試行が中断されます。たとえば、上記のカンマ区切りリストの最初のアドレスが//m1.3050である場合は、構文エラーが検出され、接続の試行が中断されます。Oracle Tuxedoソフトウェアがアドレス・リストの最後まで達しても有効なアドレスで接続を試行できない場合、つまりリストのどのアドレスにも接続を確立できない場合は、INVALID_DOMAIN例外が呼出し側に返されます。INVALID_DOMAIN以外の例外が生成された場合、その例外は呼出し側に直ちに返されます。

Oracle Tuxedoでは、ランダムなアドレスの選択もサポートされています。ランダムなアドレスの選択を使用する場合は、アドレス・リストの任意のメンバーをかっこで囲まれたパイプ区切り(|)のネットワーク・アドレス・グループとして指定します。例:

(//m1.acme:3050|//m2.acme:3050),//m1.acme:7000

この形式を使用すると、Oracle Tuxedoシステムではかっこで囲まれたアドレスのいずれか(//m1.acme:3050または//m2.acme:3050)がランダムに選択されます。INVALID_DOMAIN以外の例外が生成された場合、その例外は呼出し側に直ちに返されます。選択したアドレスで接続を確立できない場合は、かっこの後にある次の要素で接続が試行されます。接続を確立できないうちに文字列の最後に達してしまった場合は、INVALID_DOMAIN例外が呼出し側にスローされます。

注意: 次の形式でアドレス・リストを指定した場合、
注意: (//m1.acme:3050||//m2.acme:3050),//r1.acme:7000
注意: パイプ区切りリスト内のNULLアドレスは無効と判断されます。Oracle Tuxedoソフトウェアで無効なアドレスがランダムに選択された場合は、BAD_PARAM例外が呼出し側に返され、Oracle Tuxedoソフトウェアによって接続の試行が中断されます。

アドレス文字列は、TOBJADDR環境変数またはTobj_Bootstrapコンストラクタのアドレス・パラメータで指定できます。

TOBJADDR環境変数の詳細は、『Oracle Tuxedoアプリケーションの設定』の「リモート・クライアント・アプリケーションの管理」を参照してください。ただし、Tobj_Bootstrapで指定されたアドレスの方が常にTOBJADDR 環境変数よりも優先されます。TOBJADDR環境変数を使用してアドレス文字列を指定するには、Tobj_Bootstrapaddressパラメータで空の文字列を指定する必要があります。

注意: C++アプリケーションではTOBJADDRは環境変数であり、Javaアプリケーションの場合はプロパティ、Javaアプレットの場合はHTMLパラメータです。

3番目と4番目の形式はUniform Resource Locator (URL)アドレス形式と呼ばれ、Oracle WebLogic Enterpriseバージョン5.1で導入されました。NULLスキームURLアドレス形式(//hostname:port_number)の場合と同じように、URLアドレス形式を使用してIIOPリスナー/ハンドラの位置を指定します。ただし、corbaloc URLアドレス形式を使用する場合、IIOPリスナー/ハンドラへのクライアント・アプリケーションの初期接続はプリンシパル(クライアント)のIDが認証されるまで、またはユーザーが最初のオペレーションを開始するまで遅延されます。corbalocs URLアドレス形式を使用する場合でもcorbalocと同じ接続の遅延がありますが、それに加えて、クライアント・アプリケーションがSecure Sockets Layer(SSL)プロトコルを使用してISL/ISHとの初期接続を行います。表4-4は、2つのURLアドレス形式の違いを示しています。

表4-4 corbalocおよびcorbalocs URLアドレス形式の違い
URLアドレス形式
動作モードの違い
corbaloc
IIOPリスナー/ハンドラの呼出しが保護されません。オプションで、IIOPリスナー/ハンドラに対してSSLプロトコルを構成します。

注意: プリンシパルは、SecurityLevel2::Current::authenticate()オペレーションを使用して証明書ベースの認証の使用を指定することでブートストラップ処理プロセスの安全を確保できます。

corbalocs
IIOPリスナー/ハンドラの呼出しが保護されており、IIOPリスナー/ハンドラまたはサーバーORBはSSLを使用できるように構成する必要があります。

これらのURLアドレス形式は、Interoperable Naming Serviceの一部としてOMGによって採用されたオブジェクトURLの定義のサブセットです。Oracle Tuxedoソフトウェアでは、Oracle WebLogic Enterprise 4.2で追加されたランダマイズ機能だけでなく、セキュアHTTPのURLに基づいてモデル化される安全な形式をサポートするようにも、OMG提案のInteroperable Naming Serviceで規定されたURL形式が拡張されます。

corbalocおよびcorbalocs URLスキームは、TCP/IP中心の環境とDNS中心の環境の両方で簡単に操作される位置を提供します。これらのURLスキームでは、DNS形式のhostnameまたはIPアドレスとport_numberを指定します。次に例を示します。

corbaloc://curly:1024,larry:1022,joe:1999
corbalocs://host1:1024,{host2:1022|host3:1999}
Oracle WebLogic Enterpriseバージョン5.1ソフトウェアでは、スキームが異なる複数のURLのリストをサポートするように、OMG提案のInteroperable Naming Serviceで規定されたURL構文が拡張されています。次に例を示します。
corbalocs://curly:1024,corbaloc://larry:1111,
corbalocs://ctxobj:3434,mthd:3434,corbaloc://force:1111

上の例で、パーサがURL corbaloc://force:1111に達した場合は、安全な接続が試行されなかったかのようにパーサの内部状態がリセットされ、保護なしの接続の試行が開始されます。

注意: NULLスキームURLアドレス(//hostname:port_number)とcorbalocおよびcorbalocs URLアドレスは一緒に使用しないでください。
注意: Netscapeの埋め込み型Java ORBおよびJavaSoft JDK ORBで使用するように提供されるBootstrapオブジェクトでは、corbalocおよびcorbalocs URLはサポートされていません。
注意: corbalocおよびcorbalocs URLアドレス形式の使い方の詳細は、『CORBAアプリケーションにおけるセキュリティの使用』を参照してください。
注意: BootstrapコンストラクタまたはTOBJADDRで指定するネットワーク・アドレスは、サーバー・アプリケーションのUBBCONFIGファイルのネットワーク・アドレスと(大文字/小文字の区別を含めて)正確に同じでなければなりません。アドレスが一致しない場合、Bootstrapコンストラクタの呼出しは失敗し、見たところ関係のなさそうな次のエラー・メッセージが表示されます。

ERROR: Unofficial connection from client at
<tcp/ip address>/<port-number>

たとえば、ネットワーク・アドレスがサーバー・アプリケーションのUBBCONFIGファイルのISLコマンドライン・オプション文字列で(NULL URLアドレス形式を使用して) //TRIXIE:3500として指定されている場合、BootstrapコンストラクタまたはTOBJADDR//192.12.4.6:3500または//trixie:3500を指定すると接続の試行は失敗します。UNIXシステムで大文字/小文字の区別を調べるには、ホスト・システムでuname -nコマンドを使用します。Windowsシステムで正確な大文字/小文字の区別を調べるには、コントロール・パネルでホスト・システムのネットワーク設定を確認します。
注意: 前の注意のエラーは、URLアドレス形式が使用される場合は遅延されます。つまり、ISL/ISHへの接続が遅延されるのでBootstrapオブジェクトの作成時にそのエラーは発生しません。

applet (Javaメソッドのみに適用)

これは、クライアント・アプレットへのポインタです。クライアント・アプレットからBootstrapオブジェクトに明示的にISHホストとポートが渡されない場合は、この引数を渡すことができます。この引数を渡すと、BootstrapオブジェクトはアプレットのHTMLファイルでTOBJADDRの定義を検索します。

例外

BAD_PARAM

オブジェクトがnilである場合、あるいはオブジェクトに格納されているホストが接続と一致しないか、ホスト・アドレス(//hostname:port_number)が有効な形式ではない場合に発生します。

説明

Bootstrapオブジェクトを作成するC++メンバー関数(またはJavaメソッド)。

戻り値

新しく作成されたBootstrapオブジェクトへのポインタ。

 


Tobj_Bootstrap::register_callback_port

概要

IIOPハンドラ(ISH)で共同クライアント/サーバーの受信ポートを登録します。

C++マッピング

void register_callback_port(CORBA::Object_ptr objref);

パラメータ

objref

共同クライアント/サーバーによって作成されたオブジェクト参照。

例外

BAD_PARAM

オブジェクトがnilである場合、またはオブジェクトに格納されているホストが接続と一致しない場合に発生します。

IMP_LIMIT

register_callback_portメソッドが複数回呼び出された場合に発生します。

説明

このC++メンバー関数(またはJavaメソッド)は、共同クライアント/サーバーの受信ポートをISHに通知するために呼び出します。このメソッドは、GIOP 1.2の双方向機能をサポートしていない共同クライアント/サーバーORB (つまりGIOP 1.0および1.1のクライアントORB)でのみ使用します。GIOP 1.0および1.1の場合、ISHでは共同クライアント/サーバーごとに1つの受信ポートのみをサポートします。このため、register_callback_portメソッドは接続されている共同クライアント/サーバーごとに一度だけ呼び出すようにします。

使用上の注意

このメソッドを使用するときには、以下の情報を考慮に入れてください。

戻り値

なし。

 


Tobj_Bootstrap::resolve_initial_references

概要

CORBAオブジェクト参照を取得します。

C++マッピング

CORBA::Object_ptr resolve_initial_references(
const char* id);
throws Tobj::InvalidName,
org.omg.CORBA.SystemException;

パラメータ

id

このパラメータの値は次のいずれかです。

“FactoryFinder"
“InterfaceRepository"
“NameService"
“NotificationService"
“SecurityCurrent"
“TransactionCurrent"
“Tobj_SimpleEventsService"

例外

InvalidName

idが上記のどの名前でもない場合に発生します。サーバーでは、SecurityCurrentが渡された場合にもresolve_initial_references Tobj::InvalidNameが生成されます。

CORBA::NO_PERMISSION

idがTransactionCurrentまたはSecurityCurrentで、クライアントの別のBootstrapオブジェクトがCurrentオブジェクトを所有している場合に発生します。

説明

このC++メンバー関数(またはJavaメソッド)は、FactoryFinderオブジェクト、SecurityCurrentオブジェクト、TransactionCurrentオブジェクト、NotificationServiceオブジェクト、Tobj_SimpleEventsServiceオブジェクト、およびInterfaceRepositoryオブジェクトのCORBAオブジェクト参照を取得します。特定のオブジェクト参照については、_narrow関数を呼び出します。たとえば、FactoryFinderの場合はTobj::FactoryFinder::_narrowを呼び出します。

戻り値

表4-2は、各idで返されるオブジェクト参照を示しています。

 


Tobj_Bootstrap::destroy_current()

概要

Bootstrapオブジェクトで表されるドメインのCurrentオブジェクトを破棄します。

C++マッピング

void destroy_current();

例外

BootstrapオブジェクトがCurrentオブジェクトのオーナーでない場合にCORBA::NO_PERMISSIONが生成されます。

説明

このC++メンバー関数は、Bootstrapオブジェクトで表されるドメインのCurrentオブジェクトを無効にします。destroy_current() メソッドを呼び出した後、Currentオブジェクトは無効になります。それ以降に古いCurrentオブジェクトを使用しようとすると、CORBA::BAD_INV_ORDER例外がスローされます。プログラミングでは、すべてのCurrentオブジェクトを解放してからdestroy_current()を呼び出すようにしてください。

注意: destroy_current()メソッドは、2つのCurrentオブジェクト(TransactionとSecurity)を所有しているドメインのBootstrapオブジェクトで呼び出す必要があります。このメソッドを呼び出すと、セキュリティのlogoffが暗黙的に呼び出され、クライアントによって開始されたトランザクションがすべて暗黙的にロールバックされます。

アプリケーションでは、まずdestroy_current()を呼び出してから別のドメインのTransactionCurrentまたはSecurityCurrentのresolve_initial_referencesを呼び出す必要があります。そうしないと、resolve_initial_referencesCORBA::NO_PERMISSIONが生成されます。

戻り値

なし。

Javaのメソッド

Java Oracleブートストラップ処理APIでは、次のメソッドがサポートされています。

オートメーションのメソッド

このセクションでは、Oracleブートストラップ処理メカニズムでサポートされているオートメーションのメソッドについて説明します。

 


Initialize

概要

BootstrapオブジェクトをOracle Tuxedoドメインに初期化します。

MIDLマッピング

HRESULT Initialize(
[in] BSTR host);

オートメーション・マッピング

Sub Initialize(address As String)

パラメータ

address

Oracle TuxedoドメインのIIOPリスナー/ハンドラのホスト名とポート。1つまたは複数のTCP/IPアドレスを指定できます。複数のアドレスは、C++のマッピングと同じようにカンマ区切りのリストで指定します。アドレスを指定しない場合は、TOBJADDR環境変数の値が使用されます。
注意: BootstrapコンストラクタまたはTOBJADDRで指定するネットワーク・アドレスは、アプリケーションのUBBCONFIGファイルのネットワーク・アドレスと(大文字/小文字の区別を含めて)正確に同じでなければなりません。アドレスが一致しない場合、Bootstrapコンストラクタの呼出しは失敗し、見たところ関係のなさそうな次のエラー・メッセージが表示されます。

ERROR: Unofficial connection from client at
<tcp/ip address>/<port-number>

たとえば、ネットワーク・アドレスがISLコマンドライン・オプション文字列で//TRIXIE:3500として指定された場合、BootstrapコンストラクタまたはTOBJADDR//192.12.4.6:3500または//trixie:3500を指定すると接続の試行が失敗します。UNIXシステムで大文字/小文字の区別を調べるには、ホスト・システムでuname -nコマンドを使用します。Windowsシステムで正確な大文字/小文字の区別を調べるには、コントロール・パネルでホスト・システムのネットワーク設定を確認します。

戻り値

なし。

例外

表4-5は例外を示しています。

表4-5 Initializeの例外
HRESULT
説明
意味
ITF_E_NO_PERMISSION_YES
Bootstrapがすでに初期化されている
Bootstrapオブジェクトがすでに初期化されています。新しいOracle Tuxedoドメインに接続するには、新しいBootstrapオブジェクトを作成する必要があります。
E_INVALIDARG
無効なアドレス・パラメータ
指定されたアドレスが有効ではありません。
E_OUTOFMEMOY
メモリーの割当てが異常終了した
必要なメモリーを割り当てることができませんでした。
E_FAIL
無効なドメイン
指定されたアドレスでOracle Tuxedoドメインと通信できないか、TOBJADDRが定義されていません。
<SYSTEM ERROR>
初期オブジェクトが取得不能
Bootstrapオブジェクトを初期化できません。障害の原因であるシステム・エラーは、エラー・オブジェクトの「Number」メンバーで返されます。

 


CreateObject

概要

Current環境オブジェクトのインスタンスを作成します。

MIDLマッピング

HRESULT CreateObject(
[in] BSTR progid,
[out, retval] IDispatch** rtrn);

オートメーション・マッピング

Function CreateObject(progid As String) As Object	

パラメータ

progid

作成する環境オブジェクトのprogid。有効なprogidは次のとおりです。

Tobj.FactoryFinder
Tobj.SecurityCurrent
Tobj.TransactionCurrent

戻り値

作成された環境オブジェクトのインタフェース・ポインタの参照。

例外

表4-6は例外を示しています。

表4-6 CreateObjectの例外
例外
説明
意味
ITF_E_NO_PERMISSION_YES
Bootstrapオブジェクトの初期化が必要
Bootstrapオブジェクトが初期化されていません。
ITF_E_NO_PERMISSION_NO
権限なし
progidでトランザクションまたはセキュリティ・カレントが指定され、クライアントの別のBootstrapオブジェクトでカレント・オブジェクトが所有されている場合。
E_INVALIDARG
無効なprogidパラメータ
指定されたprogidが有効ではありません。
E_INVALIDARG
無効な名前
リクエストされたprogidが上記の有効なパラメータ値ではありません。
E_INVALIDARG
未知のオブジェクト
リクエストされたprogidがシステムに登録されていません。
<SYSTEM ERROR>
CoCreate Instance()が失敗した
Bootstrapオブジェクトがリクエストされたオブジェクトのインスタンスを作成できませんでした。システム・エラーは、エラー・オブジェクトの「Number」メンバーで返されます。

 


DestroyCurrent

概要

Oracle Tuxedoドメインからログアウトし、TransactionCurrentオブジェクトとSecurityCurrentオブジェクトを無効にします。

MIDLマッピング

HRESULT destroy_current();

オートメーション・マッピング

Sub destroy_current()

パラメータ

なし。

戻り値

なし。

例外

なし。

 


Bootstrapオブジェクトのプログラミング例

このセクションでは、Bootstrapオブジェクトを使用する次のプログラミング例を紹介します。

Visual Basicクライアントの例: Bootstrapオブジェクトの使用

リスト4-4は、Bootstrapオブジェクトを使用するVisual Basicクライアントのプログラミング方法を示しています。

リスト4-4 Visual Basicクライアントのプログラミング
‘Declare the Bootstrap object
Public oBootstrap As DITobj_Bootstrap
‘Declare the FactoryFinder object
Public oBsFactoryFinder As DITobj_FactoryFinder
‘Declare factory for Registrar object
Public oRegistrarFactory As DIUniversityB_RegistrarFactory
‘Declare actual Registrar object
Public oRegistrarFactory As DIUniversityB_RegistrarFactory
.... 
‘Create the Bootstrap object
Set oBootstrap = CreateObject(“Tobj.Bootstrap”)
‘Connect to the Oracle Tuxedo Domain
oBootstrap.Initialize “//host:port”
‘Get the FactoryFinder for the Oracle Tuxedo Domain
Set oBSFactoryFinder = oBootstrap.CreateObject(“Tobj.FactoryFinder”)
‘Get a factory for the Registrar object 
‘using the FactoryFinder method find_one_factory_by_id
Set oRegistrarFactory = oBSFactoryFinder.find_one_factory_by_id(“RegistrarFactoryID”)
'Create a Registrar object
Set oRegistrar = oRegistrarFactory.find_registrar(exc)

 


Interoperable Naming Serviceブートストラップ処理メカニズム

ここでは、次の内容について説明します。

はじめに

リリース8.0以降のOracle Tuxedo ORBでは、CORBA仕様2.4.2の第4章と第13章で規定されているCORBAネーミング・サービス(このマニュアルではInteroperable Naming Serviceと呼ぶ)ブートストラップ処理メカニズムがサポートされています。

このサポートにより、Interoperable Naming Service (INS)ブートストラップ処理メカニズムを実装するORBで、Oracle Tuxedoサーバー側ORBへの問合せを行い初期オブジェクト(FactoryFinderなど)およびOracle Tuxedo環境に対するPrincipalAuthenticatorのオブジェクト参照を取得できます。このサポートと、インターオペラブル初期オブジェクト参照のクライアント・サポートにより、クライアントではOracleブートストラップ処理メカニズムではなくINSブートストラップ処理メカニズムを使用できます。

注意: Oracle Tuxedoソフトウェアに付属のCORBA C++クライアントでは、INSブートストラップ処理メカニズムを使用できますが、パフォーマンス上の理由により推奨はできません。

INSオブジェクト参照

表4-7は、各IDで返されるオブジェクト参照を示しています。

表4-7 戻されるオブジェクト参照
ID
返されるオブジェクト参照
FactoryFinder
FactoryFinderオブジェクト(CORBA::FactoryFinder)
InterfaceRepository
InterfaceRepositoryオブジェクト(CORBA::Repository)
NameService
CORBAネーミング・サービス・オブジェクト(CORBA::NameService)
NotificationService
EventChannelFactoryオブジェクト
(CosNotifyChannelAdmin::EventChannelFactory)
POACurrent
POACurrentオブジェクト(CORBA::POACurrent)
PrincipalAuthenticator
PrincipalAuthenticatorオブジェクト(SecurityLevel2::PrincipalAuthenticator)
RootPOA
RootPOAオブジェクト(CORBA::RootPOA)
Tobj_SimpleEventsService
Oracleシンプル・イベントChannelFactoryオブジェクト(Tobj_SimpleEvents::ChannelFactory)

INSコマンドライン・オプション

リリース8.0以降のOracle Tuxedo CORBAでは、-ORBInitRefおよび-ORBDefaultInitRefコマンドライン・オプションがサポートされています。これらのオプションの詳細は、「ORB初期化メンバー関数」を参照してください。

次の例は、Oracle Tuxedo CORBA IIOPクライアントがOracle Tuxedo CORBA IIOPサーバー環境と通信しているものと想定しています。

client_app – ORBid BEA_IIOP – ORBInitRef
FactoryFinder=corbaloc::myhost:2468/FactoryFinder

この例で、FactoryFinderORB::resolve_initial_referencesを呼び出すと、インターオペラブル初期リファレンスのリクエストがポート2468を使用してmyhostのISL/ISHに送信されます。myhostは、tuxconfigファイルでISL/ISHに指定されたホストと大文字/小文字の区別まで正確に同じでなければなりません。

INS初期化オペレーション

INSブートストラップ処理メカニズムを使用するには、アプリケーション・プログラマは以下の要件を満たす必要があります。

INSオブジェクトのURLスキーム

リリース8.0以降のOracle Tuxedo CORBAでは、Oracle Tuxedo CORBAサーバー環境にアクセスし、初期オブジェクトのリファレンスを取得するための位置を指定するために使用する追加のUniform Resource Locator (URL)形式がサポートされています。その新しいURL形式は、INS仕様の一部としてOMGで採用されたオブジェクトURLの定義に従うとともに、それを拡張します。INS仕様で規定されているURL形式は、Oracle WebLogic Enterpriseバージョン5.1で導入されたランダマイズ機能だけでなく、セキュアHTTPのURLに基づいてモデル化される安全な形式をサポートするようにも拡張されています。

CORBA 2.4.2仕様は、仕様に準拠するORBが3つのオブジェクトURLスキームをサポートすることを要求します。それらのスキームは、IOR、corbaloc、およびcorbanameとして定義されています。

注意: 新しいURL文字列形式は、ORB::string_to_object関数にも渡すことができます。

IOR URLスキーム

IORスキームは、IOR:hex_octetsという形式の文字列です。スキーム名はIORで、":"の後のテキストはCORBA仕様で定義されます。IOR URLスキームは堅牢であり、オブジェクトの参照に使用されるカプセル化されたトランスポート情報とオブジェクト・キーからクライアントを切り離します。

corbaloc URLスキーム

その長さとバイナリ情報のテキストのエンコードが原因で、IORを非電子的な手段で人間同士が交換するのは困難です。corbalocおよびcorbalocs URLスキームでは、一般に普及しているFTPやHTTPのURLスキームに似た形式の文字列化されたオブジェクト参照が提供されます。corbalocおよびcorbalocsで定義されたURLスキームは、TCP/IP中心の環境とDNS中心の環境の両方で簡単に操作されます。corbalocおよびcorbalocs URLの構成要素は次のとおりです。

デフォルトでは、corbaloc URLはIIOP経由でアクセスできるオブジェクトを示し、corbalocs URLはIIOP over SSLを使用してアクセスできるオブジェクトを示します。

表4-8は、各URL要素のBNF構文を示しています。

表4-8 URL要素のBNF形式 
URL要素
BNF形式
<corbaloc>
= "corbaloc::"<obj_addr_list>["/"<key_string>]
[,<corbaloc>|<corbalocs>]
<corbalocs>

= "corbalocs::"<obj_addr_list>["/"<key_string>]
[,<corbaloc>|<corbalocs>]

<obj_addr_list>
= [<obj_addr> ","]* <obj_addr>
<obj_addr>
= <iiop_prot_addr> | <future_prot_addr>
<iiop_prot_addr
= <iiop_id><iiop_addr>
<iiop_id>
= "//" | <iiop_prot_token>":"
<iiop_prot_token>
= “iiop"
<iiop_addr>
= [<version> <host> [":" <port>]]
<host>
= DNS-style Host Name | ip_address
<version>
= <major> "." <minor> "@" | empty_string
<port>
= number
<major>
= number
<minor>
= number
<key_string>
= <string> | empty_string

表4-9は、各URL要素を説明しています。

表4-9 URL要素の説明
URL要素
説明
obj_addr_list
プロトコルID、バージョン、およびアドレス情報のカンマ区切りのリスト。このリストは、実装定義の方法でオブジェクトのアドレスを指定するために使用します。オブジェクトは、アドレスおよびプロトコルのいずれでもアクセスできます。その要素を使用して障害が発生した場合は、カンマ区切りリストの次の要素が使用されます。
obj_addr
プロトコルID、バージョン・タグ、およびプロトコル固有のアドレス。右中かっこ「{」、左中かっこ「}」、垂直バー「」>「」、スラッシュ「/」、およびカンマ「,」はURLのこの構成要素では使用できません。
iiop_prot_addr
IIOPプロトコルID、バージョン・タグ、およびDNS形式のホスト名とIPアドレスで構成されたアドレス。
iiop_id
IIOPプロトコルcorbalocを示すために認識されるトークン。
iiop_prot_token
IIOPプロトコル・トークン「iiop」。
iiop_addr
単一のアドレス要素。
host
DNS形式のホスト名またはIPアドレス。指定しない場合は、ローカル・ホストと見なされます。
version
「.」で区切られ、「@」が後に続くメジャーおよびマイナーのバージョン番号。バージョンがない場合は、1.0と見なされます。
ip_address
数値のIPアドレス(ドット区切りの10進表記法)。
port
IIOPリスナー/ハンドラまたは初期化エージェントがリスニングするポート番号。デフォルトは9999です。
key_string
NULLで終了しない文字列化されたオブジェクト・キー。key_stringでは、RFC 2396で規定されているエスケープ規則を使用してURLの一部として直接使用できないオクテット値からマッピングします。US-ASCII英数字はエスケープされません。この範囲外の文字は、次の文字を除いてエスケープされます。
";" | "/" | ":" | "?" | "@" | "&" | "=" | "+" | "$" |
"," | "-" | "_" | ".2 | "!2 | "~2 | "*2 | "" | "(" | ")"
key_stringは、CORBA仕様で定義されているGIOPリクエストまたはLocateRequestヘッダーのobject_keyメンバーのオクテット・シーケンスに対応します。
string_name
IETF (Internet Engineering Task Force) RFC 2396で定義されているURLエスケープが含まれる文字列化された名前。エスケープ規則は、変更の必要なくURLを様々な方法でトランスポートできるようにします。US-ASCII英数字はエスケープされません。この範囲外の文字は、次の文字を除いてエスケープされます。
";" | "/" | ":" | "?" | "@" | "&" | "=" | "+" | "$" |
"," | "-" | "_" | ".2 | "!2 | "~2 | "*2 | "" | "(" | ")"

次に、新しいURL形式の使用例を示します。

corbaloc::555xyz.com:1024,555backup.com:1022,555last.com:1999
corbalocs::555xyz.com:1024,{555backup.com:1022|555last.com:1999}
corbaloc::1.2@555xyz.com:1111
corbalocs::1.1@24.128.122.32:1011,1.0@24.128.122.34

Oracle Tuxedo 8.0以降では、スキームの異なる複数のURLのリストをサポートするように、INSの提案で規定されているURL構文が拡張されています。次に例を示します。

corbalocs::555xyz.com:1024,corbaloc::1.2@555xyz.com:1111
corbalocs::ctxobj:3434,mthd:3434,corbaloc::force:1111

上の例で、パーサがURL corbaloc::force.com:1111に達した場合は、安全な接続が試行されなかったかのようにパーサの内部状態がリセットされ、保護なしの接続の試行が開始されます。

corbaname URLスキーム

corbaname URLスキームは、URLでネーミング・サービスのエントリを示せるようにcorbalocスキームの機能を拡張します。corbaname URLは、ORBコアにネーミング・サービスの実装がなくても解決できます。corbaname URLの例を次に示します。

corbaname:555objs.com#a/string/path/to/obj

このURLは、ホスト555objs.comでNamingContext型のオブジェクト(オブジェクト・キーがNamingService)を見つけることができるか、その位置で動作しているエージェントがNamingContextのリファレンスを返すことを示します。文字列化された名前a/string/path/to/objは、そのNamingContextのresolveオペレーションの引数として使用されます。

corbaname URLはcorbaloc URLと似ていますが、corbaname URLにはネーミング・コンテキストのバインディングを識別する文字列化された名前が含まれます。#文字は、文字列化された名前の開始を示します。

URLのBNF構文は、表4-10で示してあります。

表4-10 URLのBNF構文
URL要素
書式
説明
<corbaname>
= "corbaname:"<corbaloc_obj>[
"#"<string_name>]
corbaloc_objは、corbaname URLのネーミング・コンテキストを識別する部分です。構文は、corbaloc URLの場合と同じです。
<corbaloc_obj>
<obj_addr_list>["/"<key_string>]
obj_addr_listの説明については、表4-9を参照してください。
<obj_addr_list>
corbaloc URLの定義と同じ
obj_addr_listの説明については、表4-9を参照してください。
<key_string>
corbaloc URLの定義と同じ
key_stringの説明については、表4-9を参照してください。
<string_name>
Stringified Name | empty string
string_nameの説明については、表4-9を参照してください。

corbaname URLの解決は、corbaloc URL処理の単純な拡張として実装されます。その実装を説明するために、次のcorbaname URLを使用します。

corbaname:<corbaloc_obj>["#"<string_name>]

解決は以下のように行われます。

  1. corbaname URLからcorbaloc:::<corbaloc_obj>形式のcorbaloc URLを作成します。
  2. CORBA::ORB::string_to_objectを呼び出してCosNaming::NamingContextオブジェクトを取得し、corbaloc URLをネーミング・コンテキストのオブジェクト参照に変換します。
  3. :<string_name>CosNaming::Nameに変換します。
  4. 作成したCosNaming::Nameを渡して、CosNaming::NamingContextのresolveオペレーションを呼び出します。
  5. CosNaming::NamingContext::resolveから返されるオブジェクト参照は、呼出し側に返されなければなりません。

この解決プロセスに従うことで、ネーミング・サービスに存在しないネーミング・コンテキストのオブジェクト参照を返すことがなくなります。この手法の1つの副作用は、ネーミング・サービスのスタブがORBコアの一部であるか、resolveオペレーションのリクエストを送信する内部メカニズムがなければならないことです。複雑な手間を避けるため、ネーミング・サービスのスタブをORBコアに埋め込むことをお薦めします。

INSを使用したFactoryFinderオブジェクト参照の取得

リスト4-5は、クライアント・アプリケーションがINSを使用してFactoryFinderオブジェクトのオブジェクト参照を取得するしくみを示しています。完全なサンプル・コードについては、University Sampleのクライアント・アプリケーションを参照してください。

リスト4-5 FactoryFinderオブジェクト取得のサンプル・コード
// utility to get the registrar
static UniversityW::Registrar_ptr get_registrar(
CORBA::ORB_ptr orb
)
{
    // Get the factory finder from the ORB:
CORBA::Object_var v_fact_finder_oref =
orb->resolve_initial_references("FactoryFinder");
    // Narrow the factory finder :
Tobj::FactoryFinder_var v_fact_finder_ref =
Tobj::FactoryFinder::_narrow(v_fact_finder_oref.in());
    // Use the factory finder to find the
// university's registrar factory :
CORBA::Object_var v_reg_fact_oref =
v_fact_finder_ref->find_one_factory_by_id(
UniversityW::_tc_RegistrarFactory->id()
);
    // Narrow the registrar factory :
UniversityW::RegistrarFactory_var v_reg_fact_ref =
UniversityW::RegistrarFactory::_narrow(
v_reg_fact_oref.in()
);
    // Return the university's registrar :
return v_reg_fact_ref->find_registrar();
}

INSを使用したPrincipalAuthenticatorオブジェクト参照の取得

リスト4-6は、クライアント・アプリケーションがINSを使用してPrincipalAuthenticatorオブジェクトのオブジェクト参照を取得するしくみを示しています。完全なサンプル・コードについては、University Sampleのクライアント・アプリケーションを参照してください。

リスト4-6 PrincipalAuthenticatorオブジェクト取得のサンプル・コード
// utility to log on to the security system
static SecurityLevel2::PrincipalAuthenticator_ptr logon(
CORBA::ORB_ptr orb,
const char* program_name,
UniversityW::StudentId stu_id
)
{
    // Get a Principal Authenticator directly from the ORB:
CORBA::Object_var v_pa_obj =
orb->resolve_initial_references("PrincipalAuthenticator");
    // Narrow the Principal Authenticator :
SecurityLevel2::PrincipalAuthenticator_var v_pa =
SecurityLevel2::PrincipalAuthenticator::_narrow(
v_pa_obj.in());

INSを使用したTransactionFactoryオブジェクト参照の取得

リリース8.0以降のOracle Tuxedo CORBAでは、CORBAトランザクション・サービス・インタフェースを使用してトランザクションを開始できます。クライアントは、ORB::resolve_initial_references("FactoryFinder")関数を使用してFactoryFinderのオブジェクト参照を取得します。次にクライアントは、FactoryFinderを使用して(トランザクションの開始に使用する) TransactionFactoryのリファレンスを取得します。

リスト4-7は、クライアント・アプリケーションがINSを使用してTransactionFactoryオブジェクトのオブジェクト参照を取得するしくみを示しています。完全なサンプル・コードについては、University Sampleのクライアント・アプリケーションを参照してください。

リスト4-7 INSを使用したクライアント・アプリケーションのサンプル・コード
// Get the factory finder from the ORB:
CORBA::Object_var v_fact_finder_oref =
orb->resolve_initial_references("FactoryFinder");
// Narrow the factory finder :
Tobj::FactoryFinder_var v_fact_finder_ref =
Tobj::FactoryFinder::_narrow(v_fact_finder_oref.in());
// Get the TransactionFactory from the FactoryFinder
CORBA::Object_var v_txn_fac_oref =
v_fact_finder_ref->find_one_factory_by_id(
"IDL:omg.org/CosTransactions/TransactionFactory:1.0");
// Narrow the TransactionFactory object reference
CosTransactions::TransactionFactory_var v_txn_fac_ref =
CosTransactions::TransactionFactory::_narrow(
v_txn_fac_oref.in());

INSブートストラップ処理メカニズムを使用したイベントのシーケンスは次のとおりです。

  1. ORB::resolve_initial_referencesを使用してFactoryFinderを取得します。
  2. FactoryFinderを使用してTransactionFactoryを取得します。
  3. TransactionFactoryのcreateオペレーションを使用してトランザクションを開始します。
  4. createオペレーションで返されるControlオブジェクトから、get_terminatorメソッドを使用してトランザクションのTerminatorインタフェースを取得します。
  5. Terminatorのcommitまたはrollback操作を使用してトランザクションを終了または中断します。

TransactionFactoryは、Oracleの委譲型インタフェースではなく、標準のCORBAのトランザクション・サービス・インタフェースに準拠したオブジェクトを返します。これは、サード・パーティのORBが、それぞれのORBのresolve_initial_references関数を使用してOracle Tuxedo CORBAサーバーからTransactionFactoryのリファレンスを取得し、標準OMG IDLで生成されたスタブを使用して、返されたインスタンス上で機能できることを意味します。

制限

Oracle Tuxedo 8.0以降では、TransactionFactoryとクライアントのCurrentのアクションが調整されません。つまり、クライアントでは2つのメカニズムのいずれかを使用してトランザクションのステータスを管理および取得する必要があります。また、インタフェースとオペレーションは、表4-11で示されているものしかサポートされていません。OMG IDLで規定されているほかのオペレーションでは、CORBA::NO_IMPLEMENT例外が返されます。

表4-11 サポートされているINSインタフェースとオペレーション 
インタフェース
サポートされているオペレーション
TransactionFactory
create
Control
get_terminator
get_coordinator
Terminator
commit
rollback
Coordinator
get_status
rollback_only
get_transaction_name


  先頭に戻る       前  次