3.5.2 CORBAサーバー・オブジェクトの作成
Serverオブジェクトでは、次のタスクが実行されます:
- CORBAサーバー・アプリケーションを初期化します。初期化の過程では、ファクトリの登録、CORBAサーバー・アプリケーションで必要なリソースの割当て、およびXAリソース・マネージャの起動(必要な場合)が行われます。
- CORBAサーバー・アプリケーションの停止とクリーンアップを実行します。
- CORBAクライアントのリクエストを満たすために必要なCORBAオブジェクトをインスタンス化します。
CORBAサーバー・アプリケーションでは、Serverオブジェクトはすでにインスタンス化されており、Serverオブジェクトのヘッダー・ファイルを利用することができます。サーバー・アプリケーションを初期化および解放するメソッド、およびサーバーント・オブジェクトを作成するメソッド(必要な場合)は、独自に実装してください。
次のコード・スニペットには、Simpappサンプル・アプリケーションのServerオブジェクトのC++コードが含まれています。
static CORBA::Object_var static_var_factory_reference;
// Method to start up the server
CORBA::Boolean
Server::initialize (int argc, char *argv[])
{
// Create the Factory Object Reference
static_var_factory_reference = TP::create_object_reference (
_tc_SimpleFactory->id (), "simple_factory", CORBA::NVList::_nil ());
// Register the factory reference with the FactoryFinder
TP::register_factory (static_var_factory_reference.in (),
_tc_SimpleFactory->id ());
return CORBA_TRUE;
}
// Method to shutdown the server
void
Server::release ()
{
// Unregister the factory.
try
{
TP::unregister_factory (static_var_factory_reference.in (),
_tc_SimpleFactory->id ());
}
catch (...)
{
TP::userlog ("Couldn't unregister the SimpleFactory");
}
}
// Method to create servants
Tobj_Servant
Server::create_servant (const char *interface_repository_id)
{
if (!strcmp (interface_repository_id, _tc_SimpleFactory->id ()))
{
return new SimpleFactory_i ();
}
if (!strcmp (interface_repository_id, _tc_Simple->id ()))
{
return new Simple_i ();
}
return 0;
}親トピック: ステップ3: CORBAサーバー・アプリケーションの記述