4.6.8 INSを使用したTransactionFactoryオブジェクト参照の取得
リリース8.0以降のOracle Tuxedo CORBAでは、CORBAトランザクション・サービス・インタフェースを使用してトランザクションを開始できます。クライアントは、ORB::resolve_initial_references("FactoryFinder")関数を使用してFactoryFinderのオブジェクト参照を取得します。次にクライアントは、FactoryFinderを使用して(トランザクションの開始に使用する) TransactionFactoryのリファレンスを取得します。
次のコード・スニペットは、クライアント・アプリケーションがINSを使用してTransactionFactoryオブジェクトへのオブジェクト参照を取得する方法の例を示しています。完全なサンプル・コードについては、University Sampleのクライアント・アプリケーションを参照してください。
// 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ブートストラップ処理メカニズムを使用したイベントのシーケンスは次のとおりです:
ORB::resolve_initial_referencesを使用してFactoryFinderを取得します。- FactoryFinderを使用してTransactionFactoryを取得します。
- TransactionFactoryのcreate操作を使用してトランザクションを開始します。
- create操作で返されるControlオブジェクトから、
get_terminatorメソッドを使用してトランザクションのTerminatorインタフェースを取得します。 - Terminatorのcommitまたはrollback操作を使用してトランザクションを終了または中断します。
TransactionFactoryは、Oracleの委任型インタフェースではなく、標準のCORBAのトランザクション・サービス・インタフェースに準拠したオブジェクトを返します。これは、サード・パーティのORBが、それぞれのORBのresolve_initial_references関数を使用してOracle Tuxedo CORBAサーバーからTransactionFactoryのリファレンスを取得し、標準OMG IDLで生成されたスタブを使用して、返されたインスタンス上で機能できることを意味します。