12.07.2015 Views

VisiBroker Edition

VisiBroker Edition

VisiBroker Edition

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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

使 用 服 务 激 活 方 法DBObjectSequence 是 一 个 DBObject 序 列 , 服 务 器 使 用 该 序 列 来 追 踪 当 前 活 动 的对 象 。DB 界 面 使 用 create_object 操 作 创 建 一 个 或 多 上 DBObject。 由 DB 界 面 创 建 的 对 象可 以 一 起 构 成 一 个 服 务 。实 现 服 务 激 活 的 对 象仅 适 用 于 C ++:idl2cpp 编 译 器 通 过 boa/odb/odb.idl 为 _sk_DBObject 框 架 类 产 生 两 种 构 建 器 。 第一 种 构 建 器 适 用 于 人 工 实 例 化 的 对 象 ; 第 二 种 构 建 器 可 以 使 对 象 变 成 服 务 的 一 部分 。 如 下 文 所 示 , DBObject 的 实 现 构 成 其 基 础 _sk_DBObject 方 法 , 其 中 使 用 的 是服 务 构 建 器 , 而 不 是 通 常 用 于 人 工 实 例 化 的 对 象 的 object_name 构 建 器 。 通 过 调 用这 种 构 建 器 , DBObject 将 自 身 构 建 成 被 称 为 DBService 的 服 务 的 一 部 分 。class DBObjectImpl:public _sk_DBObject {private:CORBA::String_var _name;public:DBObjectImpl(const char *nm, const CORBA::ReferenceData& data): _sk_DBObject("DBService", data), _name(nm) {}. . .};注 :仅 适 用 于 C++:基 础 构 建 器 需 要 一 个 服 务 名 称 和 一 个 不 透 明 的 CORBA::ReferenceData 值 - 当 这 个 对象 因 为 客 户 要 求 必 须 被 激 活 时 , Activator 使 用 这 些 参 数 来 唯 一 地 识 别 该 对 象 。 在本 实 例 中 , 用 于 区 分 多 个 实 例 的 引 用 数 据 的 编 号 范 围 为 0 ~ 99。实 现 服 务 激 活 器通 常 , 当 一 个 服 务 器 将 实 现 对 象 的 C++ 或 Java 类 实 例 化 时 , 一 个 对 象 就 被 激 活 ,然 后 调 用 C++ BOA::obj_is_ready 或 Java obj_is_ready, 接 下 来 再 调 用 C++BOA::impl_is_ready 或 Java impl_is_ready 。 要 延 迟 对 象 激 活 时 , 必 须 控 制 BOA在 对 象 激 活 过 程 中 所 调 用 的 activate 方 法 。 您 可 以 用 如 下 的 方 法 取 得 这 种 控 制 权 :从 C++ extension::Activator 或 Javacom.inprise.vbroker.extenstion.Activator 派 生 一 个 新 类 并 忽 略 activate 方 法 ,然 后 使 用 被 忽 略 的 activate 方 法 将 与 该 对 象 相 关 的 C++ 或 Java 类 实 例 化 。在 odb 实 例 中 , DBActivator 类 从 C++ extension::Activator 或 Javacom.inprise.vbroker.extenstion.Activator 衍 生 出 来 , 并 忽 略 activate 和deactivate 方 法 。 DBObject 是 通 过 activate 方 法 构 建 的 。C++: class DBActivator:public extension::Activator {virtual CORBA::Object_ptr activate(CORBA::ImplementationDef_ptr impl);virtual void deactivate(CORBA::Object_ptr,CORBA::ImplementationDef_ptr impl );public:DBActivator(CORBA::BOA_ptr boa) :_boa(boa) {}private:CORBA::BOA_ptr _boa;};使 用 对 象 激 活 器 31-5

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

Saved successfully!

Ooh no, something went wrong!