3.7.1.3.5 説明

サーバー初期化の最後のステップとして呼び出されるinitializeコールバック・メソッドを使用すると、アプリケーションがアプリケーション固有の初期化を実行できます。

通常、サーバー・アプリケーションは、Server::initializeで次のタスクを実行します:

  • サーバー・アプリケーションに実装されたCORBAオブジェクト・ファクトリのリファレンスを作成し、TP::register_factory()操作を使用してFactoryFinderに登録します。
  • グローバル変数を初期化します(使用する場合)。
  • XAリソース・マネージャを開きます(サーバー・アプリケーションで使用する場合)。

サーバー・アプリケーションでは、必要なXAリソース・マネージャを開く必要があります。この処理には、以下のいずれかのメソッドを呼び出します。

  • TP::open_xa_rm()。これは、オブジェクト参照を取得する必要なく、静的関数で実行できるため、サーバー・アプリケーションで推奨される手法です。

    ノート:

    INSブートストラップ処理メカニズムを使用して初期オブジェクト参照を取得する場合は、TP::open_xa_rm()メソッドを使用する必要があります。
  • Tobj::TransactionCurrent::open_xa_rm()。TransactionCurrentオブジェクトのリファレンスは、Bootstrapオブジェクトから取得できます。Bootstrapオブジェクトのリファレンスの取得方法については、「TP::bootstrap()」を参照してください。TransactionCurrentオブジェクトの詳細は、「CORBAブートストラップ処理のプログラミング・リファレンス」という項と『CORBAトランザクションの使用』を参照してください。
  • トランザクションは、Tobj::TransactionCurrent::open_xa_rm()またはTP::open_xa_rmメソッドの呼出し後のinitializeメソッドで開始できます。ただし、initialize()メソッドで開始したトランザクションは、initialize()が復帰する前に、サーバー・アプリケーションで終了する必要があります。制御が戻ったときにトランザクションがアクティブな場合、サーバー・アプリケーションが起動に失敗し、正常に終了します。これは、Server::initialize()が復帰した後にトランザクションをコミットするのかロールバックするのかを論理的に処理する方法がサーバー・アプリケーションにないからです。この状況はエラーとなります。