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) { } } }