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

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

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 ドメインへの最初の接続を表す場合があります。ヌル スキーマ 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 システムの開発コマンドを使用すると、このタイプのクライアント アプリケーションをビルドできます (『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 アプリケーションの設定』の「Oracle Tuxedo CORBA リモート クライアント アプリケーションの管理」を参照してください。ただし、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 と同じ接続の遅延がありますが、それに加えて、クライアント アプリケーションがセキュア ソケット レイヤ (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 アドレス形式の使い方の詳細については、『Tuxedo CORBA アプリケーションのセキュリティ機能』を参照してください。
注意 : Bootstrap コンストラクタまたは TOBJADDR で指定するネットワーク アドレスは、サーバ アプリケーションの UBBCONFIG ファイルのネットワーク アドレスと (大文字/小文字の区別を含めて) 正確に同じでなければなりません。アドレスが一致しない場合、Bootstrap コンストラクタの呼び出しは失敗し、見たところ関係のなさそうな次のエラー メッセージが表示されます。

ERROR: クライアントからの非公式の接続
(アドレス <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: クライアントからの非公式の接続
(アドレス <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 で TransactionCurrent または SecurityCurrent が指定され、クライアントの別の Bootstrap オブジェクトで Current オブジェクトが所有されている場合。
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 クライアントのプログラミング
‘Bootstrap オブジェクトを宣言
Public oBootstrap As DITobj_Bootstrap
‘FactoryFinder オブジェクトを宣言
Public oBsFactoryFinder As DITobj_FactoryFinder
‘Registrar オブジェクトのファクトリを宣言
Public oRegistrarFactory As DIUniversityB_RegistrarFactory
‘実際の Registrar オブジェクトを宣言
Public oRegistrarFactory As DIUniversityB_RegistrarFactory
.... 
‘Bootstrap オブジェクトを作成
Set oBootstrap = CreateObject(“Tobj.Bootstrap”)
Oracle Tuxedo ドメインに接続
oBootstrap.Initialize “//host:port”
Oracle Tuxedo ドメインの FactoryFinder を取得
Set oBSFactoryFinder = oBootstrap.CreateObject(“Tobj.FactoryFinder”)
‘FactoryFinder のメソッド find_one_factory_by_id を使用して
‘Registrar オブジェクトのファクトリを取得
Set oRegistrarFactory = oBSFactoryFinder.find_one_factory_by_id(“RegistrarFactoryID”)
'Registrar オブジェクトを作成
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 英数字はエスケープされません。この範囲外の文字は、次の文字を除いてエスケープされます。
“;” | “/” | “:” | “?” | “@” | “&” | “=” | “+” | “$” |
”,” | “-“ | “_” | “.” | “!” | “~” | “*” | “” | “(“ | “)”
key_string は、CORBA 仕様で定義されている GIOP 要求または LocateRequest ヘッダの object_key メンバーのオクテット シーケンスに対応します。
string_name
IETF (Internet Engineering Task Force) RFC 2396 で定義されている URL エスケープが含まれる文字列化された名前。エスケープ規則は、変更の必要なく URL をさまざまな方法で転送できるようにします。US-ASCII 英数字はエスケープされません。この範囲外の文字は、次の文字を除いてエスケープされます。
“;” | “/” | “:” | “?” | “@” | “&” | “=” | “+” | “$” |
”,” | “-“ | “_” | “.” | “!” | “~” | “*” | “” | “(“ | “)”

次に、新しい 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 オブジェクト取得のサンプル コード
// レジストラを取得するユーティリティ
static UniversityW::Registrar_ptr get_registrar(
CORBA::ORB_ptr orb
)
{
    // ORB からファクトリ ファインダを取得
CORBA::Object_var v_fact_finder_oref =
orb->resolve_initial_references("FactoryFinder");
    // ファクトリ ファインダをナロー変換
Tobj::FactoryFinder_var v_fact_finder_ref =
Tobj::FactoryFinder::_narrow(v_fact_finder_oref.in());
    // ファクトリ ファインダを使用して university の
// レジストラ ファクトリを検索する
CORBA::Object_var v_reg_fact_oref =
v_fact_finder_ref->find_one_factory_by_id(
UniversityW::_tc_RegistrarFactory->id()
);
    // レジストラ ファクトリをナロー変換
UniversityW::RegistrarFactory_var v_reg_fact_ref =
UniversityW::RegistrarFactory::_narrow(
v_reg_fact_oref.in()
);
    // university のレジストラを返す
return v_reg_fact_ref->find_registrar();
}

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

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

コード リスト 4-6 PrincipalAuthenticator オブジェクト取得のサンプル コード
// セキュリティ システムにログオンするユーティリティ
static SecurityLevel2::PrincipalAuthenticator_ptr logon(
CORBA::ORB_ptr orb,
const char* program_name,
UniversityW::StudentId stu_id
)
{
    // ORB から直接 Principal Authenticator を取得
CORBA::Object_var v_pa_obj =
orb->resolve_initial_references("PrincipalAuthenticator");
    // 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 を使用したクライアント アプリケーションのサンプル コード
// ORB からファクトリ ファインダを取得
CORBA::Object_var v_fact_finder_oref =
orb->resolve_initial_references("FactoryFinder");
// ファクトリ ファインダをナロー変換
Tobj::FactoryFinder_var v_fact_finder_ref =
Tobj::FactoryFinder::_narrow(v_fact_finder_oref.in());
// FactoryFinder から TransactionFactory を取得
CORBA::Object_var v_txn_fac_oref =
v_fact_finder_ref->find_one_factory_by_id(
"IDL:omg.org/CosTransactions/TransactionFactory:1.0");
// TransactionFactory オブジェクト参照をナロー変換
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


  ページの先頭       前  次