12.07.2015 Views

VisiBroker Edition

VisiBroker Edition

VisiBroker Edition

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

使 用 服 务 对 象 和 服 务 对 象 管 理 器C++:Java:ServantActivators当 设 置 了 ServantRetentionPolicy::RETAIN 和RequestProcessingPolicy::USE_SERVANT_MANAGER, 需 要 使 用 ServantActivators。当 设 置 了 ServantRetentionPolicy.RETAIN 和RequestProcessingPolicy.USE_SERVANT_MANAGER 时 , 需 要 使 用ServantActivators。由 该 类 服 务 对 象 管 理 器 激 活 的 服 务 对 象 被 记 录 在 活 动 对 象 图 中 。当 使 用 服 务 对 象 激 活 器 处 理 请 求 时 , 会 发 生 以 下 事 件 :1 收 到 一 个 客 户 请 求 ( 客 户 请 求 包 含 POA 名 称 、 对 象 ID 等 )。2 POA 首 先 检 查 活 动 对 象 图 。 如 果 可 以 在 该 图 中 找 到 对 象 ID, 则 将 操 作 传 递 给服 务 对 象 , 并 将 响 应 返 回 给 客 户 。3 如 果 活 动 对 象 图 中 找 不 到 对 象 ID, 则 POA 在 服 务 对 象 上 调 用 incarnate 。incarnate 传 递 对 象 ID 和 对 象 被 激 活 时 所 处 的 POA 。4 服 务 对 象 管 理 器 定 位 适 用 的 合 适 的 服 务 对 象 。5 服 务 对 象 ID 被 输 入 活 动 对 象 图 , 而 响 应 被 返 回 给 客 户 。注 : etherealize 和 incarnate 方 法 实 现 是 用 户 提 供 的 代 码 。随 后 , 服 务 对 象 可 以 被 激 活 。 有 数 个 引 发 该 操 作 的 原 因 , 其 中 包 括deactivate_object 操 作 , 与 该 POA 关 联 的 POA 管 理 器 的 去 激 活 , 等 。 有 关 去激 活 对 象 的 详 情 , 请 参 阅 第 7-12 页 " 去 激 活 对 象 "。int main(int argc, char* const* argv) {try {// 初 始 化 ORB。CORBA::ORB_ptr orb = CORBA::ORB_init(argc, argv);DataStore::_create();// 取 得 根 POA 的 引 用CORBA::Object_var obj = orb->resolve_initial_references("RootPOA");PortableServer::POA_var rootPOA = PortableServer::POA::_narrow(obj);CORBA::PolicyList policies;policies.length(2);policies[(CORBA::ULong)0] =rootPOA->create_lifespan_policy(PortableServer::PERSISTENT);policies[(CORBA::ULong)1] =rootPOA->create_request_processing_policy(PortableServer::USE_SERVANT_MANAGER);// 用 正 确 的 策 略 创 建 myPOAPortableServer::POAManager_var rootManager = rootPOA->the_POAManager();PortableServer::POA_var myPOA =rootPOA->create_POA("bank_servant_activator_poa", rootManager,policies);// 创 建 服 务 对 象 激 活 器AccountManagerActivator servant_activator_impl;// 设 定 服 务 对 象 激 活 器myPOA->set_servant_manager(&servant_activator_impl);7-16 <strong>VisiBroker</strong> 开 发 者 指 南

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!