一种基于事务的构件在线演化方法.pdf

上传人:b*** 文档编号:1278399 上传时间:2018-04-12 格式:PDF 页数:10 大小:446.61KB
返回 下载 相关 举报
摘要
申请专利号:

CN201010530576.0

申请日:

2010.11.04

公开号:

CN101963913A

公开日:

2011.02.02

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 9/445申请日:20101104|||公开

IPC分类号:

G06F9/445

主分类号:

G06F9/445

申请人:

南京大学

发明人:

曹春; 马晓星; 吕建

地址:

210093 江苏省南京市汉口路22号

优先权:

专利代理机构:

江苏圣典律师事务所 32237

代理人:

贺翔

PDF下载: PDF下载
内容摘要

本发明公开了一种基于事务的构件在线演化方法,该方法通过扩展现有构件容器,增加演化管理器、通信器、依赖管理器以及事务管理器等部件,在此基础上建立起基于多构件事务状态的构件演化管理方法,从而保证了演化过程系统的一致性。本发明实现了构件模型的开放性,管理用户可以通过控制器动态修改构件的状态,可以在持续当前系统运行的前提下,对构件的内部结构、行为等侧面进行动态更新,达到优化服务质量、消除系统缺陷的效果,从而大大增加软件系统的服务,为关键系统提供不间断的服务,并具有安全性和扩展性。

权利要求书

1: 一种基于事务的构件在线演化方法, 其特征在于它包含以下步骤 : 1) 构件部署器首先将构件部署到支持在线演化的构件容器, 即 DUC 中, 该 DUC 在构件实 例基础上增加了演化管理器、 通信器、 依赖管理器以及事务管理器部件, 以支持构件动态演 化; 2) 构件管理器向 DUC 发送演化命令, DUC 负责实施演化行为 ; 3) DUC 向构件管理器返回演化结果。
2: 根据权利要求 1 所述的基于事务的构件在线演化方法, 其特征在于步骤 1) 中构件部 署器部署构件的具体步骤包括 : 1.1) 解析构件部署信息, 生成 DUC, 为其配置各种服务 ; 1.2) 解析构件的事务元信息, 生成事务管理器并对事务管理器进行初始化, 事务管理 器在初始化时根据事务元信息生成一个随着构件的执行会进行状态自动跳转的事务状态 机, 事务状态机中包含若干不同的事务状态以及事务状态之间跳转的条件, 每一个事务状 态包含了一个一致性事务列表, 该列表包含构件在此状态之前和之后都要使用的其他构件 服务的接口 ; 1.3) 初始化依赖管理器, 并根据构件所依赖的接口将自己的构件对象注册到其所依赖 构件的依赖管理器中 ; 1.4) 初始化通信器, 由通信器构造一个用于存储被封锁调用的调用列表, 包含时间和 调用类型的对象。
3: 根据权利要求 1 所述的基于事务的构件在线演化方法, 其特征在于步骤 2) DUC 实施 演化行为的过程为 : 2.1) DUC 将演化命令交给演化管理器, 演化管理器收到演化命令之后, 首先查询依赖管 理器, 获取当前系统中所有需要此演化构件提供服务的依赖构件列表 ; 2.2) 演化管理器判断依赖构件列表是否为空, 是则转到 2.7) , 否则转到 2.3) ; 2.3) 演化管理器向演化构件与依赖构件的通信器发送封锁命令, 通信器收到封锁命令 后对于所有对构件的请求调用, 获取其调用时间, 将时间和调用对象存进封锁调用列表 ; 2.4) 演化管理器判断演化构件是否达到事务一致状态, 如果是则转到 2.7) , 否则转到 2.5) ; 2.5) 演化管理器判断演化构件与依赖构件的通信器中存储封锁调用的列表是否都为 空, 是的话等待一定时间, 转到 2.4) , 否则转到 2.6) ; 2.6) 演化管理器从演化构件与依赖构件的通信器存储封锁调用的列表中取一个最早 被封锁的调用执行, 转到 2.4) ; 2.7) 演化管理器向构件实例执行演化命令。
4: 根据权利要求 3 所述的基于事务的构件在线演化方法, 其特征在于步骤 2.4) 中一致 性事务状态的判断具体步骤是 : 2.4.1) 演化管理器查询演化构件的事务管理器中是否存在正在运行中的事务, 如果 有的话返回否, 否则转到 2.4.2) ; 2.4.2) 演化管理器查询依赖管理器, 获取当前系统中所有需要此演化构件提供服务的 依赖构件列表, 对于其中的每一个依赖构件, 执行 2.4.3) ; 2.4.3) 演化管理器查询依赖构件的事务管理器中所有的一致性事务接口列表, 如果结 2 果为空, 转到 2.4.6) , 否则, 转到 2.4.4) ; 2.4.4) 对于一致性事务接口列表中的每一个接口, 执行 2.4.5) ; 2.4.5) 如果此接口与演化构件所提供的接口相匹配, 返回否 ; 2.4.6) 返回是。
5: 根据权利要求 4 所述的基于事务的构件在线演化方法, 其特征在于步骤 2.4.1) 中, 事务管理器接到演化管理器发出的查询命令之后的步骤是 : 查询其中的所有事务状态机, 如果存在未处于开始状态的事务, 返回是, 否则返回否。
6: 根据权利要求 4 所述的基于事务的构件在线演化方法, 其特征在于步骤 2.4.3) 中, 事务管理器接到演化管理器发出的查询命令之后, 步骤如下 : 2.4.3.1) 查询事务管理器中所有未处于开始状态的事务, 如果不存在, 返回空列表, 否 则转到 2.4.3.2) ; 2.4.3.2) 查询事务其所处状态的一致性事务列表, 如果不为空, 返回列表给演化管理 器, 否则返回空列表。
7: 根据权利要求 3 所述的基于事务的构件在线演化方法, 其特征在于步骤 2.6) 中演化 管理器执行最早被封锁的调用的步骤是 : 2.6.1) 演化管理器向演化构件以及依赖构件的通信器查询它们的封锁调用列表中最 早的调用 ; 2.6.2) 通信器收到查询命令之后检查其封锁调用列表, 如果为空, 返回空, 否则比较 封锁调用列表中所有的调用的封锁时间, 返回最早封锁的调用及其封锁时间 ; 2.6.3) 演化管理器比较这些调用的封锁时间, 得到最早被封锁的调用 ; 2.6.4) 演化管理器通知此调用的通信器释放并执行此调用 ; 2.6.5) 通信器收到此命令之后, 从封锁调用列表中删除此调用, 然后执行这个调用。

说明书


一种基于事务的构件在线演化方法

     技术领域
     本发明涉及一种基于事务的构件在线演化技术, 属于软件维护技术领域。背景技术 软件构件作为一种可以复用、 组装的软件资源, 能够降低软件系统的开发成本, 缩 短软件产品推向市场的时间, 因此被广泛地用来构建应用系统。 同时, 一些关键领域的软件 系统要求提供不间断的服务, 对这些软件系统中构件进行升级演化必须在不中断运行系统 的前提下进行, 即在线演化。
     现有的软件构件技术一般不支持在线演化, 只有少数的构件技术支持在线演化, 但其演化过程只考虑单个构件的状态, 缺乏对多个构件之间事务状态的考察。 为此, 本发明 基于相关的多个构件之间的事务关系, 专门提出一种构件在线演化方法, 该方法在支持构 件在线演化的同时, 应用事务通信算法, 能够保障更新过程的系统一致性。
     发明内容 本发明所要解决的技术问题是在系统不间断运行的需求下, 提供一种构件在线演 化的方法, 使得系统不需要暂停服务既可以更新功能, 同时保障这一演化过程不会对业务 过程不产生破坏性效果。
     本发明所述的基于事务的构件在线演化方法, 它包含以下步骤 : 1) 构件部署器首先将构件部署到支持在线演化的构件容器 (DUC) 中, 该构件容器在 构件实例基础上增加了演化管理器、 通信器、 依赖管理器以及事务管理器部件, 以支持构件 动态演化。传统构件容器一般包括了构件实例, 容器负责管理实例。与传统构件容器相比, DUC 增加了演化管理器、 通信器、 依赖管理器以及事务管理器部件, 以支持构件动态演化。
     2) 构件管理器向 DUC 发送演化命令, DUC 负责实施演化行为 ; 3) DUC 向构件管理器返回演化结果。
     上述步骤 1) 中部署器部署构件的具体步骤包括 : 1.1) 解析构件部署信息, 生成 DUC, 为其配置各种服务 ; 1.2) 解析构件的事务元信息, 生成事务管理器并对事务管理器进行初始化, 事务管理 器在初始化时根据事务元信息生成一个随着构件的执行会进行状态自动跳转的事务状态 机, 事务状态机中包含若干不同的事务状态以及事务状态之间跳转的条件, 每一个事务状 态包含了一个一致性事务列表, 该列表包含构件在此状态之前和之后都要使用的其他构件 服务的接口 ; 1.3) 初始化依赖管理器, 并根据构件所依赖的接口将自己的构件对象注册到其所依赖 构件的依赖管理器中 ; 1.4) 初始化通信器, 由通信器构造一个用于存储被封锁调用的调用列表, 包含时间和
     调用类型的对象。
     上述步骤 2) DUC 实施演化行为的过程为 : 2.1) DUC 将演化命令交给演化管理器, 演化管理器收到演化命令之后, 首先查询依赖管 理器, 获取当前系统中所有需要此演化构件提供服务的依赖构件列表 ; 2.2) 演化管理器判断依赖构件列表是否为空, 是则转到 2.7) , 否则转到 2.3) ; 2.3) 演化管理器向演化构件与依赖构件的通信器发送封锁命令, 通信器收到封锁命令 后对于所有对构件的请求调用, 获取其调用时间, 将时间和调用对象存进封锁调用列表 ; 2.4) 演化管理器判断演化构件是否达到事务一致状态, 如果是则转到 2.7) , 否则转到 2.5) ; 2.5) 演化管理器判断演化构件与依赖构件的通信器中存储封锁调用的列表是否都为 空, 是的话等待一定时间, 转到 2.4) , 否则转到 2.6) ; 2.6) 演化管理器从演化构件与依赖构件的通信器存储封锁调用的列表中取一个最早 被封锁的调用执行, 转到 2.4) ; 2.7) 演化管理器向构件实例执行演化命令。
     上述步骤 2.4) 中判断事务一致状态需要依赖构件的事务管理器获取构件内部一 致性事务状态。其具体步骤是 : 2.4.1) 演化管理器查询演化构件的事务管理器中是否存在正在运行中的事务, 如果有 的话返回否, 否则转到 2.4.2) ; 2.4.2) 演化管理器查询依赖管理器, 获取当前系统中所有需要此演化构件提供服务的 依赖构件列表, 对于其中的每一个依赖构件, 执行 2.4.3) ; 2.4.3) 演化管理器查询依赖构件的事务管理器中所有的一致性事务接口列表, 如果结 果为空, 转到 2.4.6) , 否则, 转到 2.4.4) ; 2.4.4) 对于一致性事务接口列表中的每一个接口, 执行 2.4.5) ; 2.4.5) 如果此接口与演化构件所提供的接口相匹配, 返回否 ; 2.4.6) 返回是。
     上述步骤 2.4..1) 中, 事务管理器接到演化管理器发出的查询命令之后的步骤是 : 查询其中的所有事务状态机, 如果存在未处于开始状态的事务, 返回是, 否则返回否。
     上述步骤 2.4.3) 中, 事务管理器接到演化管理器发出的查询命令之后, 步骤如 下: 2.4.3.1) 查询事务管理器中所有未处于开始状态的事务, 如果不存在, 返回空列表, 否 则转到 2.4.3.2) ; 2.4.3.2) 查询事务其所处状态的一致性事务列表, 如果不为空, 返回列表给演化管理 器, 否则返回空列表。
     步骤 2.6) 中演化管理器执行最早被封锁的调用的步骤是 : 2.6.1) 演化管理器向演化构件以及依赖构件的通信器查询它们的封锁调用列表 中最早的调用 ; 2.6.2) 通信器收到查询命令之后检查其封锁调用列表, 如果为空, 返回空, 否则比 较封锁调用列表中所有的调用的封锁时间, 返回最早封锁的调用及其封锁时间 ; 2.6.3) 演化管理器比较这些调用的封锁时间, 得到最早被封锁的调用。2.6.4) 演化管理器通知此调用的通信器释放并执行此调用 ; 2.6.5) 通信器收到此命令之后, 从封锁调用列表中删除此调用, 然后执行这个调用。
     本发明与现有的技术相比, 其显著优点是 : 1) 动态性 : 本发明实现了构件模型的开放性, 管理用户可以通过控制器动态修改构 件的状态, 可以在持续当前系统运行的前提下, 对构件的内部结构、 行为等侧面进行动态更 新, 达到优化服务质量、 消除系统缺陷的效果, 从而大大增加软件系统的服务, 为关键系统 提供不间断的服务 ; 2) 安全性 : 可适应构件在使用基于事务通信算法的构件交互协议, 通过细粒度的状 态控制保证动态更新的安全性 ; 3) 扩展性 : 可适应构件控制层中的控制器可以由开发人员配置, 因此用户可以按照 自己的需求手动编写自定义的控制器加入构件中完成运行时刻任意的更新。 附图说明
     图 1 显示了本发明的参与者包括构件部署器、 构件管理器和 DUC 的交互顺序, 图 2 显示了构件演化管理器执行的演化流程图。具体实施方式 本实施例给出一个在 JBoss 应用服务器上的实现。
     JBoss 应用服务器处于操作系统之上, 应用系统之下, 为 EJB 等 JavaEE 构件提供 支持。基于 Java 的构件为 EJB(Enterprise JavaBean) 构件, EJB 构件由构件容器进行管 理。JBoss 中支持动态增加、 删除或者替换构件构件的热部署演化, 但这种热部署并不考虑 其他构件事务状态。
     完成构件演化需要定义新的容器 DUC, 该容器继承了 JBoss 中的 EJBContainer, 增 加了用于支持动态演化的演化管理器、 通信器、 依赖管理器以及事务管理器部件。
     演化管理器负责接收构件管理器的演化命令, 并实施演化操作。
     通信器实现为容器的拦截器 (Interceptor) , 在正常状态下拦截器对调用不作处 理, 继续拦截器链的执行, 在封锁状态下, 将调用线程挂起等待, 并将调用存入封锁调用列 表。
     依赖管理器在构件部署时初始化为空列表, 并向其依赖构件的依赖管理器中注册 自己, 以表明其依赖关系。
     事务管理器在部署时刻根据构件事务配置信息初始化, 生成事务状态机, 事务状 态机的默认状态为初始状态。随着构件业务逻辑的运行, 触发状态的跳转。事务管理器还 需要负责向演化管理器提供构件的事务信息。
     下面以一个网上购物系统在结算购物车中商品时的替换购物车构件的过程为例 来说明本发明的一次执行过程。Client 代表正在购物的顾客, Shopping_Cart 代表包含了 顾客所选商品的购物车。Client 在进行结算的业务逻辑如表 1 所示 : 表1: 购物顾客的结算业务逻辑
     Client 构件的部署流程如下 : 1) 解析构件部署信息, 生成 DUC, 为其配置各种服务 ; 2) 解析注解 “@Transaction” , 生成事务管理器, 事务管理器初始化一个包含 s0、 s1、 s2 这 3 个状态的事务状态机, 其中 s0、 s1 状态的一致性事务列表为空, s2 的一致性事务列表 包含 “jndi: Shopping_CartBean/remote” 接口。状态 s0 由事件 a0 触发跳转至 s1, 状态 s1 由事件 a1 触发跳转至 s2, 状态 s2 由事件 a2 触发跳转至 s0。此事务状态机的默认状态 为 s0。 3) 初始化依赖管理器, 并将自己的 DUC 对象注册到其所依赖的 Shopping_Cart 构 件的依赖管理器中 ; 4) 初始化通信器。
     随着 Client 构件业务逻辑的执行, 由于 “tran.trigger(“a0” );”以及 “tran. trigger(“a1” );” 语句的执行, Client 的事务状态机会进行跳转 : 由默认的事务状态 s0 跳转到事务状态 s1, 再由事务状态 s1 跳转到事务状态 s2。
     此时, 构件管理器向 DUC 发送演化命令, Shopping_Cart 的 DUC 实施演化行为的过 程为 : 1) DUC 将演化命令交给演化管理器, 演化管理器收到演化命令之后, 首先查询依赖 管理器, 获取当前系统中所有需要 Shopping_Cart 构件提供服务的依赖构件列表, 结果为 Client 构件 ; 2) 演化管理器向 Shopping_Cart 构件与 Client 构件的通信器发送封锁命令, 通信器收 到封锁命令后对于所有对构件的请求调用, 获取其调用时间, 将时间和调用对象存进封锁 调用列表 ; 3) 演化管理器判断事务一致状态 : 首先演化管理器查询 Shopping_Cart 构件的事务管 理器发现没有正在运行的事务 ; 然后演化管理器查询 Client 构件的事务管理器中所有的 一致性事务接口列表, 结果此列表只包含 “jndi: Shopping_CartBean/remote” 接口 ; 然后 再将此接口与 Shopping_Cart 构件的接口比较, 结果一致。因此判断 Shopping_Cart 构件 没有达到事务一致状态。
     4) 演化管理器判断 Shopping_Cart 构件与 Client 构件的通信器中存储封锁调用
     的列表都为空, 话等待一定时间 ; 5) 此时, Client 构件执行 “shopping_cart. Payoff();” , 此调用被 Shopping_Cart 构 件的通信器拦截, 通信器获取其调用时间, 将时间和调用对象存进封锁调用列表。
     6) 演化管理器再次判断事务一致状态没有达到 ; 7)演化管理器从 Shopping_Cart 构件的通信器的封锁调用列表中取一个最早被封 锁 的 调 用 执 行, “shopping_cart. Payoff();”被 执 行 后 Client 业 务 逻 辑 执 行 “tran. trigger(“a2” );” Client 的事务状态机会进行跳转 : 由事务状态 s2 跳转到事务状态 s0 ; 8) 演化管理器再次判断事务一致状态, 此时 Client 构件的事务状态机中的一致性事 务接口列表为空, 达到事务一致状态 ; 9) 演化管理器向构件实例执行演化命令, 实施构件替换。

一种基于事务的构件在线演化方法.pdf_第1页
第1页 / 共10页
一种基于事务的构件在线演化方法.pdf_第2页
第2页 / 共10页
一种基于事务的构件在线演化方法.pdf_第3页
第3页 / 共10页
点击查看更多>>
资源描述

《一种基于事务的构件在线演化方法.pdf》由会员分享,可在线阅读,更多相关《一种基于事务的构件在线演化方法.pdf(10页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN101963913A43申请公布日20110202CN101963913ACN101963913A21申请号201010530576022申请日20101104G06F9/44520060171申请人南京大学地址210093江苏省南京市汉口路22号72发明人曹春马晓星吕建74专利代理机构江苏圣典律师事务所32237代理人贺翔54发明名称一种基于事务的构件在线演化方法57摘要本发明公开了一种基于事务的构件在线演化方法,该方法通过扩展现有构件容器,增加演化管理器、通信器、依赖管理器以及事务管理器等部件,在此基础上建立起基于多构件事务状态的构件演化管理方法,从而保证了演化过程系统的。

2、一致性。本发明实现了构件模型的开放性,管理用户可以通过控制器动态修改构件的状态,可以在持续当前系统运行的前提下,对构件的内部结构、行为等侧面进行动态更新,达到优化服务质量、消除系统缺陷的效果,从而大大增加软件系统的服务,为关键系统提供不间断的服务,并具有安全性和扩展性。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书5页附图2页CN101963914A1/2页21一种基于事务的构件在线演化方法,其特征在于它包含以下步骤1)构件部署器首先将构件部署到支持在线演化的构件容器,即DUC中,该DUC在构件实例基础上增加了演化管理器、通信器、依赖管理器以及事务管理器部件。

3、,以支持构件动态演化;2)构件管理器向DUC发送演化命令,DUC负责实施演化行为;3)DUC向构件管理器返回演化结果。2根据权利要求1所述的基于事务的构件在线演化方法,其特征在于步骤1)中构件部署器部署构件的具体步骤包括11)解析构件部署信息,生成DUC,为其配置各种服务;12解析构件的事务元信息,生成事务管理器并对事务管理器进行初始化,事务管理器在初始化时根据事务元信息生成一个随着构件的执行会进行状态自动跳转的事务状态机,事务状态机中包含若干不同的事务状态以及事务状态之间跳转的条件,每一个事务状态包含了一个一致性事务列表,该列表包含构件在此状态之前和之后都要使用的其他构件服务的接口;13)初。

4、始化依赖管理器,并根据构件所依赖的接口将自己的构件对象注册到其所依赖构件的依赖管理器中;14)初始化通信器,由通信器构造一个用于存储被封锁调用的调用列表,包含时间和调用类型的对象。3根据权利要求1所述的基于事务的构件在线演化方法,其特征在于步骤2)DUC实施演化行为的过程为21)DUC将演化命令交给演化管理器,演化管理器收到演化命令之后,首先查询依赖管理器,获取当前系统中所有需要此演化构件提供服务的依赖构件列表;22)演化管理器判断依赖构件列表是否为空,是则转到27),否则转到23);23)演化管理器向演化构件与依赖构件的通信器发送封锁命令,通信器收到封锁命令后对于所有对构件的请求调用,获取其。

5、调用时间,将时间和调用对象存进封锁调用列表;24)演化管理器判断演化构件是否达到事务一致状态,如果是则转到27),否则转到25);25)演化管理器判断演化构件与依赖构件的通信器中存储封锁调用的列表是否都为空,是的话等待一定时间,转到24),否则转到26);26)演化管理器从演化构件与依赖构件的通信器存储封锁调用的列表中取一个最早被封锁的调用执行,转到24);27)演化管理器向构件实例执行演化命令。4根据权利要求3所述的基于事务的构件在线演化方法,其特征在于步骤24)中一致性事务状态的判断具体步骤是241)演化管理器查询演化构件的事务管理器中是否存在正在运行中的事务,如果有的话返回否,否则转到2。

6、42);242)演化管理器查询依赖管理器,获取当前系统中所有需要此演化构件提供服务的依赖构件列表,对于其中的每一个依赖构件,执行243);243)演化管理器查询依赖构件的事务管理器中所有的一致性事务接口列表,如果结权利要求书CN101963913ACN101963914A2/2页3果为空,转到246),否则,转到244);244)对于一致性事务接口列表中的每一个接口,执行245);245)如果此接口与演化构件所提供的接口相匹配,返回否;246)返回是。5根据权利要求4所述的基于事务的构件在线演化方法,其特征在于步骤241)中,事务管理器接到演化管理器发出的查询命令之后的步骤是查询其中的所有事务。

7、状态机,如果存在未处于开始状态的事务,返回是,否则返回否。6根据权利要求4所述的基于事务的构件在线演化方法,其特征在于步骤243)中,事务管理器接到演化管理器发出的查询命令之后,步骤如下2431)查询事务管理器中所有未处于开始状态的事务,如果不存在,返回空列表,否则转到2432);2432)查询事务其所处状态的一致性事务列表,如果不为空,返回列表给演化管理器,否则返回空列表。7根据权利要求3所述的基于事务的构件在线演化方法,其特征在于步骤26)中演化管理器执行最早被封锁的调用的步骤是261)演化管理器向演化构件以及依赖构件的通信器查询它们的封锁调用列表中最早的调用;262)通信器收到查询命令之。

8、后检查其封锁调用列表,如果为空,返回空,否则比较封锁调用列表中所有的调用的封锁时间,返回最早封锁的调用及其封锁时间;263)演化管理器比较这些调用的封锁时间,得到最早被封锁的调用;264演化管理器通知此调用的通信器释放并执行此调用;265)通信器收到此命令之后,从封锁调用列表中删除此调用,然后执行这个调用。权利要求书CN101963913ACN101963914A1/5页4一种基于事务的构件在线演化方法0001技术领域0002本发明涉及一种基于事务的构件在线演化技术,属于软件维护技术领域。背景技术0003软件构件作为一种可以复用、组装的软件资源,能够降低软件系统的开发成本,缩短软件产品推向市场。

9、的时间,因此被广泛地用来构建应用系统。同时,一些关键领域的软件系统要求提供不间断的服务,对这些软件系统中构件进行升级演化必须在不中断运行系统的前提下进行,即在线演化。0004现有的软件构件技术一般不支持在线演化,只有少数的构件技术支持在线演化,但其演化过程只考虑单个构件的状态,缺乏对多个构件之间事务状态的考察。为此,本发明基于相关的多个构件之间的事务关系,专门提出一种构件在线演化方法,该方法在支持构件在线演化的同时,应用事务通信算法,能够保障更新过程的系统一致性。发明内容0005本发明所要解决的技术问题是在系统不间断运行的需求下,提供一种构件在线演化的方法,使得系统不需要暂停服务既可以更新功能。

10、,同时保障这一演化过程不会对业务过程不产生破坏性效果。0006本发明所述的基于事务的构件在线演化方法,它包含以下步骤1构件部署器首先将构件部署到支持在线演化的构件容器(DUC)中,该构件容器在构件实例基础上增加了演化管理器、通信器、依赖管理器以及事务管理器部件,以支持构件动态演化。传统构件容器一般包括了构件实例,容器负责管理实例。与传统构件容器相比,DUC增加了演化管理器、通信器、依赖管理器以及事务管理器部件,以支持构件动态演化。00072构件管理器向DUC发送演化命令,DUC负责实施演化行为;3DUC向构件管理器返回演化结果。0008上述步骤1)中部署器部署构件的具体步骤包括11)解析构件部。

11、署信息,生成DUC,为其配置各种服务;12解析构件的事务元信息,生成事务管理器并对事务管理器进行初始化,事务管理器在初始化时根据事务元信息生成一个随着构件的执行会进行状态自动跳转的事务状态机,事务状态机中包含若干不同的事务状态以及事务状态之间跳转的条件,每一个事务状态包含了一个一致性事务列表,该列表包含构件在此状态之前和之后都要使用的其他构件服务的接口;13)初始化依赖管理器,并根据构件所依赖的接口将自己的构件对象注册到其所依赖构件的依赖管理器中;14)初始化通信器,由通信器构造一个用于存储被封锁调用的调用列表,包含时间和说明书CN101963913ACN101963914A2/5页5调用类型。

12、的对象。0009上述步骤2)DUC实施演化行为的过程为21)DUC将演化命令交给演化管理器,演化管理器收到演化命令之后,首先查询依赖管理器,获取当前系统中所有需要此演化构件提供服务的依赖构件列表;22)演化管理器判断依赖构件列表是否为空,是则转到27),否则转到23);23)演化管理器向演化构件与依赖构件的通信器发送封锁命令,通信器收到封锁命令后对于所有对构件的请求调用,获取其调用时间,将时间和调用对象存进封锁调用列表;24)演化管理器判断演化构件是否达到事务一致状态,如果是则转到27),否则转到25);25)演化管理器判断演化构件与依赖构件的通信器中存储封锁调用的列表是否都为空,是的话等待一。

13、定时间,转到24),否则转到26);26)演化管理器从演化构件与依赖构件的通信器存储封锁调用的列表中取一个最早被封锁的调用执行,转到24);27)演化管理器向构件实例执行演化命令。0010上述步骤24)中判断事务一致状态需要依赖构件的事务管理器获取构件内部一致性事务状态。其具体步骤是241)演化管理器查询演化构件的事务管理器中是否存在正在运行中的事务,如果有的话返回否,否则转到242);242)演化管理器查询依赖管理器,获取当前系统中所有需要此演化构件提供服务的依赖构件列表,对于其中的每一个依赖构件,执行243);243)演化管理器查询依赖构件的事务管理器中所有的一致性事务接口列表,如果结果为。

14、空,转到246),否则,转到244);244)对于一致性事务接口列表中的每一个接口,执行245);245)如果此接口与演化构件所提供的接口相匹配,返回否;246)返回是。0011上述步骤241)中,事务管理器接到演化管理器发出的查询命令之后的步骤是查询其中的所有事务状态机,如果存在未处于开始状态的事务,返回是,否则返回否。0012上述步骤243)中,事务管理器接到演化管理器发出的查询命令之后,步骤如下2431)查询事务管理器中所有未处于开始状态的事务,如果不存在,返回空列表,否则转到2432);2432)查询事务其所处状态的一致性事务列表,如果不为空,返回列表给演化管理器,否则返回空列表。00。

15、13步骤26)中演化管理器执行最早被封锁的调用的步骤是261)演化管理器向演化构件以及依赖构件的通信器查询它们的封锁调用列表中最早的调用;262)通信器收到查询命令之后检查其封锁调用列表,如果为空,返回空,否则比较封锁调用列表中所有的调用的封锁时间,返回最早封锁的调用及其封锁时间;263)演化管理器比较这些调用的封锁时间,得到最早被封锁的调用。说明书CN101963913ACN101963914A3/5页60014264演化管理器通知此调用的通信器释放并执行此调用;265)通信器收到此命令之后,从封锁调用列表中删除此调用,然后执行这个调用。0015本发明与现有的技术相比,其显著优点是1动态性本。

16、发明实现了构件模型的开放性,管理用户可以通过控制器动态修改构件的状态,可以在持续当前系统运行的前提下,对构件的内部结构、行为等侧面进行动态更新,达到优化服务质量、消除系统缺陷的效果,从而大大增加软件系统的服务,为关键系统提供不间断的服务;2安全性可适应构件在使用基于事务通信算法的构件交互协议,通过细粒度的状态控制保证动态更新的安全性;3扩展性可适应构件控制层中的控制器可以由开发人员配置,因此用户可以按照自己的需求手动编写自定义的控制器加入构件中完成运行时刻任意的更新。附图说明0016图1显示了本发明的参与者包括构件部署器、构件管理器和DUC的交互顺序,图2显示了构件演化管理器执行的演化流程图。。

17、具体实施方式0017本实施例给出一个在JBOSS应用服务器上的实现。0018JBOSS应用服务器处于操作系统之上,应用系统之下,为EJB等JAVAEE构件提供支持。基于JAVA的构件为EJB(ENTERPRISEJAVABEAN)构件,EJB构件由构件容器进行管理。JBOSS中支持动态增加、删除或者替换构件构件的热部署演化,但这种热部署并不考虑其他构件事务状态。0019完成构件演化需要定义新的容器DUC,该容器继承了JBOSS中的EJBCONTAINER,增加了用于支持动态演化的演化管理器、通信器、依赖管理器以及事务管理器部件。0020演化管理器负责接收构件管理器的演化命令,并实施演化操作。0。

18、021通信器实现为容器的拦截器(INTERCEPTOR),在正常状态下拦截器对调用不作处理,继续拦截器链的执行,在封锁状态下,将调用线程挂起等待,并将调用存入封锁调用列表。0022依赖管理器在构件部署时初始化为空列表,并向其依赖构件的依赖管理器中注册自己,以表明其依赖关系。0023事务管理器在部署时刻根据构件事务配置信息初始化,生成事务状态机,事务状态机的默认状态为初始状态。随着构件业务逻辑的运行,触发状态的跳转。事务管理器还需要负责向演化管理器提供构件的事务信息。0024下面以一个网上购物系统在结算购物车中商品时的替换购物车构件的过程为例来说明本发明的一次执行过程。CLIENT代表正在购物的。

19、顾客,SHOPPING_CART代表包含了顾客所选商品的购物车。CLIENT在进行结算的业务逻辑如表1所示表1购物顾客的结算业务逻辑说明书CN101963913ACN101963914A4/5页7CLIENT构件的部署流程如下1)解析构件部署信息,生成DUC,为其配置各种服务;2)解析注解“TRANSACTION”,生成事务管理器,事务管理器初始化一个包含S0、S1、S2这3个状态的事务状态机,其中S0、S1状态的一致性事务列表为空,S2的一致性事务列表包含“JNDISHOPPING_CARTBEAN/REMOTE”接口。状态S0由事件A0触发跳转至S1,状态S1由事件A1触发跳转至S2,状态。

20、S2由事件A2触发跳转至S0。此事务状态机的默认状态为S0。00253)初始化依赖管理器,并将自己的DUC对象注册到其所依赖的SHOPPING_CART构件的依赖管理器中;4)初始化通信器。0026随着CLIENT构件业务逻辑的执行,由于“TRANTRIGGER“A0”以及“TRANTRIGGER“A1”语句的执行,CLIENT的事务状态机会进行跳转由默认的事务状态S0跳转到事务状态S1,再由事务状态S1跳转到事务状态S2。0027此时,构件管理器向DUC发送演化命令,SHOPPING_CART的DUC实施演化行为的过程为1)DUC将演化命令交给演化管理器,演化管理器收到演化命令之后,首先查询。

21、依赖管理器,获取当前系统中所有需要SHOPPING_CART构件提供服务的依赖构件列表,结果为CLIENT构件;2)演化管理器向SHOPPING_CART构件与CLIENT构件的通信器发送封锁命令,通信器收到封锁命令后对于所有对构件的请求调用,获取其调用时间,将时间和调用对象存进封锁调用列表;3)演化管理器判断事务一致状态首先演化管理器查询SHOPPING_CART构件的事务管理器发现没有正在运行的事务;然后演化管理器查询CLIENT构件的事务管理器中所有的一致性事务接口列表,结果此列表只包含“JNDISHOPPING_CARTBEAN/REMOTE”接口;然后再将此接口与SHOPPING_C。

22、ART构件的接口比较,结果一致。因此判断SHOPPING_CART构件没有达到事务一致状态。00284)演化管理器判断SHOPPING_CART构件与CLIENT构件的通信器中存储封锁调用说明书CN101963913ACN101963914A5/5页8的列表都为空,话等待一定时间;5)此时,CLIENT构件执行“SHOPPING_CARTPAYOFF”,此调用被SHOPPING_CART构件的通信器拦截,通信器获取其调用时间,将时间和调用对象存进封锁调用列表。00296)演化管理器再次判断事务一致状态没有达到;7)演化管理器从SHOPPING_CART构件的通信器的封锁调用列表中取一个最早被封锁的调用执行,“SHOPPING_CARTPAYOFF”被执行后CLIENT业务逻辑执行“TRANTRIGGER“A2”CLIENT的事务状态机会进行跳转由事务状态S2跳转到事务状态S0;8)演化管理器再次判断事务一致状态,此时CLIENT构件的事务状态机中的一致性事务接口列表为空,达到事务一致状态;9)演化管理器向构件实例执行演化命令,实施构件替换。说明书CN101963913ACN101963914A1/2页9图1说明书附图CN101963913ACN101963914A2/2页10图2说明书附图CN101963913A。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1