Borland(R) Enterprise Server VisiBroker(R) デベロッパーズガイド

[目次][索引][前へ][次へ]

15.3.7 オブジェクトの生成と登録の例

コードサンプル15-2とコードサンプル15-3に,CreationImplDefクラスとOAD.reg_implementation()メソッドを使用してサーバをOADに登録する方法を示します。この機能は独立した管理プロセスで使用されますが,オブジェクトインプリメンテーションそのもので使用する必要はありません。オブジェクトインプリメンテーションで使用する場合,これらのタスクをオブジェクトインプリメンテーションの活性化より前に実行しなければなりません。

コードサンプル15-2  VisiBroker ORBオブジェクトの生成とOADへの登録(C++)
 
#include "oad_c.hh"
// USE_STD_NS is a define setup by VisiBroker to use the std namespace
USE_STD_NS
 
int main(int argc, char* const* argv)
{
   try {
      // Initialize the ORB.
      CORBA::ORB_var orb = CORBA::ORB_init(argc, argv);
 
      Activation::OAD_var anOAD = Activation::OAD::bind();
 
      // Create an ImplDef
      extension::CreationImplDef_var _implDef = 
            anOAD->create_CreationImplDef();
 
      _implDef->repository_id = "IDL:Bank/AccountManager:1.0";
      _implDef->object_name = "BankManager";
      _implDef->path_name = "/user/TPBrokerV5/Server";
      _implDef->activation_policy = extension::SHARED_SERVER;
      try {
             anOAD->reg_implementation(
                    *((extension::CreationImplDef*)_implDef));
 
      } catch(const CORBA::Exception& e) {
            cerr << "reg_implementation Failed:" <<endl;
                  cerr << e << endl;
            return 1;
      }
   }
   catch(const CORBA::Exception& e) {
      cerr << e << endl;
      return 1;
   }
 
   return 0;
}

コードサンプル15-3 VisiBroker ORBオブジェクトの生成とOADへの登録(Java)
 
// Register.java
import com.inprise.vbroker.Activation.*;
import com.inprise.vbroker.extension.*;
 
public class Register{
 
   public static void main(String[ ] args) {
      // Initialize the ORB.
      org.omg.CORBA.ORB orb =
                          org.omg.CORBA.ORB.init(args,null);
      // Locate an OAD
 
      try {
         OAD anOAD =
            OADHelper.bind(orb);
 
         // Create an ImplDef
         CreationImplDef _implDef = new com.inprise.vbroker.
            extension.CreationImplDef();
         _implDef.repository_id =
                              "IDL:Bank/AccountManager:1.0";
         _implDef.object_name = "BankManager";
         _implDef.path_name = "vbj";
         _implDef.id = new byte[0];
         _implDef.activation_policy = com.inprise.vbroker.
            extension.Policy.SHARED_SERVER;
         _implDef.env = new String[0];
 
         String[ ] str = new String[1];
         str[0] = "Server";
         _implDef.args = str;
         try {
            anOAD.reg_implementation(_implDef);
         } catch (Exception e) {
            System.out.println("Caught " + e);
         }
 
      }
      catch (org.omg.CORBA.NO_IMPLEMENT e) {
      }
   }
}