コードサンプル9-2に_tie_Accountクラスを使用する際に必要なServer.Cファイルの変更内容を示します。
#include "Bank_s.hh"
#include <math.h>
. . .
int main(int argc, char* const* argv) {
try {
// Initialize the ORB.
CORBA::ORB_var orb = CORBA::ORB_init(argc, argv);
// get a reference to the rootPOA
PortableServer::POA_var rootPOA =
PortableServer::POA::_narrow(
orb->resolve_initial_references("RootPOA"));
CORBA::PolicyList policies;
policies.length(1);
policies[(CORBA::ULong)0] =
rootPOA->create_lifespan_policy(
PortableServer::PERSISTENT);
// get the POA Manager
PortableServer::POAManager_var poa_manager =
rootPOA->the_POAManager();
// Create myPOA with the right policies
PortableServer::POA_var myPOA =
rootPOA->create_POA("bank_agent_poa",
poa_manager, policies);
// Create the servant
AccountManagerImpl managerServant(rootPOA);
// Create the delegator
POA_Bank_AccountManager_tie<AccountManagerImpl>
tieServer(managerServant);
// Decide on the ID for the servant
PortableServer::ObjectId_var managerId =
PortableServer::string_to_ObjectId("BankManager");
// Activate the servant with the ID on myPOA
myPOA->activate_object_with_id(managerId, &tieServer);
// Activate the POA Manager
poa_manager->activate();
cout << myPOA->servant_to_reference(&tieServer) <<
"is ready" << endl;
// Wait for incoming requests
orb->run();
} catch(const CORBA::Exception& e) {
cerr << e << endl;
return 1;
}
return 0;
}