CN101944028B - 一种构件化软件系统运行状态的按需动态持久化方法 - Google Patents
一种构件化软件系统运行状态的按需动态持久化方法 Download PDFInfo
- Publication number
- CN101944028B CN101944028B CN 201010294782 CN201010294782A CN101944028B CN 101944028 B CN101944028 B CN 101944028B CN 201010294782 CN201010294782 CN 201010294782 CN 201010294782 A CN201010294782 A CN 201010294782A CN 101944028 B CN101944028 B CN 101944028B
- Authority
- CN
- China
- Prior art keywords
- persistence
- attribute
- major key
- controller
- member example
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种构件化软件系统运行状态的按需动态持久化方法,属于软件技术领域。本发明通过在开发阶段构造软件系统时,将持久化逻辑相关的代码从业务构件中抽取出来并将其注入到软件系统实现体之中;在运行阶段,被注入的持久化逻辑并不直接调用实际的持久化机制,而是对持久化控制器进行调用,从而在持久化控制器协助下间接地实现持久化过程。与现有技术相比,本发明可以在无需改动软件系统实现体的情况下,动态地调整系统的持久化功能,提高系统灵活性,降低开发人员构建系统及维护人员理解系统的难度,最终导致软件开发维护成本的降低。
Description
技术领域
本发明涉及一种构件化软件系统运行状态的按需动态持久化方法,属于软件技术领域,适用于软件的开发与维护。
背景技术
持久化是将应用使用的存放在内存中的数据(如对象)保存到非易失性存储设备(如磁盘文件、关系型数据库、XML数据库等等)中的一个过程。持久化是软件系统一个非常重要的非功能需求。软件的一些本质特性,如软件需求的变化性和不断增加的复杂性等,决定了在软件生存周期中,持久化功能的变化是不可避免的。特别是在Internet成为主流软件运行环境之后,开放、动态、多变的网络环境对现有持久化技术提出了新的挑战:软件的数据需求与数据资源在运行前可能无法明确,在运行中也可能持续变化,这种不确定性的存在导致持久化问题的解决无法一蹴而就,不可避免地需要延伸到运行阶段,从而要求持久化技术具备足够的动态适应能力,即,构件属性与目标数据源之间绑定和映射关系的创建、更新、删除都可以动态实现与调整。由于目前的持久化技术主要针对相对封闭、静态、稳定的传统软件,仅提供静态持久化机制,应用的持久化功能一旦确定并生效执行,那么在运行时刻将无法被更改,除非中止应用的运行,修改策略配置文件甚至源码,再重启应用让新的持久化策略生效。这种方式缺乏足够灵活性,代价高昂,更为重要的是,Internet使得数据变化的广度、深度、频率以及影响均达到前所未有的程度,此时的软件系统往往要求提供7天×24小时的不间断服务,传统软件离线调整持久化功能的方式显然不适用。此外,对于构件化软件系统而言,构件往往从市场上购得,无法获取源代码,因此对构件持久化功能的修改也变得困难重重,甚至于完全不可能。简言之,现有的针对静态、封闭的传统软件设计的持久化技术在处理Internet环境下软件系统的数据需求时,缺乏足够的动态调整能力,适用性较差。
发明内容
本发明的目的是提供一种构件化软件系统运行状态的按需动态持久化方法,本发明通过在开发阶段构造软件系统时,将持久化逻辑相关的代码从业务构件中抽取出来,在部署阶段将其注入到软件系统实现体之中。在运行阶段,被注入的持久化逻辑(包括目标数据源、持久对象与目标数据源数据的映射关系、持久化操作执行时机等等)并不直接调用实际的持久化机制,而是对位于中间层扮演代理角色的持久化控制器进行调用,从而在持久化控制器协助下间接地实现持久化过程。持久化控制器负责监控数据使用方式的变化,即,持久化策略配置文件的变动。根据该变化,持久化控制器动态地生成、更新、替换以及删除实际对软件系统进行持久化的底层机制,调整构件化软件系统运行实体与目标数据源之间的关联和映射关系,从而可以在无需改动软件系统实现体的情况下,动态地调整系统的持久化功能,提高系统灵活性,降低开发人员构建系统及维护人员理解系统的难度,最终导致软件开发维护成本的降低。
本发明的技术方案为:
一种构件化软件系统运行状态的按需动态持久化方法,其步骤为:
1)软件系统的开发阶段,将持久化逻辑相关的代码从业务代码中移除并注入到构件允许的插入点处;
2)软件系统的运行阶段,当构件属性的访问方法被调用时,构件发送请求消息给持久化控制器;
3)持久化控制器接到请求消息后,根据当前运行的持久化策略对目标数据表进行持久化操作,并返回消息给被调用的构件实例;
4)被调用的构件实例根据返回消息中提供的持久化机制对目标数据源进行持久化操作,并将操作结果通知构件。
进一步的,所述构件属性的访问方法包括:写方法、读方法。
进一步的,当构件属性的写方法被调用时:
a)构件以被调用属性访问方法的构件实例作为消息的参数,向持久化控制器发送写消息;
b)持久化控制器查询当前构件实例所属的类是否被设置为持久态,如果否,则继续执行业务逻辑,否则执行步骤c);
c)持久化控制器获取当前需要被执行的赋值方法的名字,并且从该名字中截取出被赋值操作的构件实例的属性名;
d)持久化控制器检查当前构件实例是否正处于持久化过程之中,若是,则继续执行业务逻辑,否则执行步骤e);
e)持久化控制器检查该构件实例的元信息,查询该构件实例被赋值的属性信息,如果此时该属性是该构件实例的主键属性之一,则执行步骤f),否则执行步骤g);
f)持久化控制器检查该构件实例的所有主键属性,是否全部的主键属性都已赋值,如果是则更新目标数据表记录与对象,否则继续执行业务逻辑;
g)持久化控制器检查当前构件实例的元信息,如果该实例所有主键属性都已赋值,并且目标数据表中存在与主键值相关的纪录,则对目标数据表的对应记录进行更新操作。
进一步的,如果目标数据表中没有与该主键值匹配的数据记录,则将该构件实例的主键值作为一条新记录插入目标数据表。
进一步的,将该构件实例的主键值作为一条新记录插入目标数据表的方法为:
i)将该构件实例设置为持久化进行态后,将该构件实例的主键值插入目标数据表;
ii)修改该构件实例的元信息,标明该构件实例的状态已与目标数据表中的某纪录关联;
iii)将该构件实例的状态版本号增加1,以区别当前的构件实例与插入前的构件实例;
iv)重新设置构件类中描述该构件实例主键属性的元信息,使得新版本的构件类进行相应改变;
v)修改该构件实例的元信息,标明本次持久化操作结束,然后继续执行业务逻辑。
进一步的,当构件属性的读方法被调用时:
a)构件以被调用属性访问方法的构件实例作为消息的参数向持久化控制器发送读消息;
b)持久化控制器查询当前构件实例所属的类是否被设置为持久态,如果否,则继续执行业务逻辑,否则执行步骤c);
c)持久化控制器获取当前需要被执行的值查询方法的名字,并且获取值查询方法的返回值类型:如果是对象引用值类型的属性,则首先从目标数据库中加载该对象对应的数据纪录,并用该记录实例化该目标对象实例,然后返回主键的属性取值;如果是非对象引用值类型的属性,对于主键属性,直接返回其取值,对于非主键属性,先确认该构件实例的主键属性值是否有对应的数据记录存在于目标数据表中,如果存在,则查询目标数据表中的对应纪录,从中获取该非主键属性对应的值,赋给该属性之后,再返回主键属性值。
进一步的,采用持久化工具注入将持久化相关逻辑代码注入到构件运行的插入点。
进一步的,所述插入点包括构件的构造时刻、构件的销毁时刻、构件的修改时刻。
进一步的,所述持久化控制器监测系统的持久化策略配置文件的变动,维护持久化策略,其方法为:持久化控制器运行一策略配置文件监控线程,如果策略配置文件出现变化,则持久化控制器根据新的持久化策略配置文件动态地创建出新的持久化会话,解除运行态的构件实例与原持久化会话之间的托管关系,然后将运行态的构件实例与新持久化会话建立关联,最后删除原持久化会话。
本发明包含两部分内容:1、构件化软件持久化功能的分离和间接持久化功能的注入;2、运行阶段持久化策略的动态调整机制。
具体技术方案如下:
软件系统的持久化功能在运行时刻能够被按需动态调整,需要实现两个目标:1.持久化策略独立于应用实现体进行配置;2.调整后的持久化策略能够对所有正在运行中的业务构件即时生效。
(1)构件化软件持久化功能分离和间接持久化功能的注入。分离是指将持久化逻辑相关的代码从业务代码中去除;注入是指定义一套可配置的持久化策略,通过某种方式(如AOP技术)将配置后的持久化策略自动应用到业务代码中。针对按需动态持久化的第一个目标,在软件系统的开发阶段,通过持久化逻辑的分离和注入以达到消除应用业务代码对持久层接口的直接依赖的目的。即,构件化软件系统的持久化功能并不直接由构件本身实现,而是在构件允许的插入点(例如构件的构造、销毁、修改时)处由持久化工具注入。同时,为了确保持久化功能的在线可调整性,被注入的持久化逻辑并非直接对软件系统的状态进行持久化,而是对位于中间件层的持久化控制器的调用,即,当构件属性的访问(读/写)方法被调用时,构件并不直接调用持久化机制进行实际的持久化操作,而是向持久化控制器发送消息,将会由持久化控制器决定此时是否需要执行持久化操作以及执行何种持久化操作,具体情况见下段。相比于直接注入目标明确的持久化操作的软件系统,本发明采取的是间接注入方式的持久化操作,因此持久化所需的数据访问操作并未被固化在软件系统实现体中,从而更有利于在运行期进行动态调整。
(2)运行阶段持久化策略的动态调整机制。针对动态持久化的第二个目标,为了让所有运行态的构件实例都能及时按照新的持久化策略运作,需要一个居于中间层的持久化控制器来负责获取和维护软件系统构件的持久化元信息该控制器会读取持久化策略配置文件,获取各个构件实例的持久化元信息:包括构件的哪些属性需要被持久化、哪些属性与其他构件存在关联关系等等,从而计算出各个构件实例能够被持久化需要满足的条件,以精确协调和控制构件实例的每一次状态改变和查询的行为(如附图2、3所示),对构件实例而言,其状态被改变和查询的时刻存在两种情况,即,每个属性的赋值方法setter和值查询方法getter被调用的时刻。其各自触发的持久化控制器的执行逻辑分别描述如下:
如图2所示,属性赋值方法setter的执行逻辑:
1.构件实例向持久化控制器发送“写”消息,以被调用属性访问方法的构件实例本身作为消息的参数。持久化控制器查询该构件实例的所属的类是否被设置为持久态,如果否,则直接返回,否则进入以下步骤;
2.持久化控制器通过AOP提供的反射能力,获得当前需要被执行的赋值方法的名字,并且从该名字中截取出被赋值操作的构件实例的属性名;
3.持久化控制器检查当前构件实例是否正处于某个持久化过程之中,若是,则返回,否则,进入以下步骤;
4.持久化控制器检查该构件实例的元信息,查询该构件实例被赋值的属性信息,如果此时该属性是该构件实例的主键属性之一,则进入步骤5,否则跳到步骤7;
5.持久化控制器检查该构件实例的所有主键属性,是否全部的主键属性都已经完成赋值,如果为真,则进入6,准备插入一条数据库记录,否则,直接返回。
6.持久化控制器使用了具体的持久化机制如Hibernate来持久化构件实例。以Hibernate为例,Hibernate的SessionFactory结构在控制器中初始化。持久化控制器调用HibernateSessionFactory的getCurrentSession方法获得一个Session实例来开始一次对目标数据库的操作。在调用该Session实例插入记录之前,尝试更新数据表记录与对象(即如果数据库中有这样一条记录,则update,否则就insert),如果成功则返回;如果失败,则表明目标数据表中尚不存在和该主键值匹配的数据记录,因此需要先将该主键值作为一条新记录插入目标数据表,具体过程为:先把构件实例的设置为持久化进行态,以避免在本次持久化进行的同时又出现对该实例状态的持久化操作,导致死循环;在该主键值插入目标数据表之后,会执行以下操作:i).修改该实例的相关元信息,标明该实例的状态已经和目标数据表中的某个记录相关联了;ii).将构件实例的状态版本号version增加1,以区别当前的构件实例与插入前的构件实例(它们分别对应数据表中的两条记录);iii).重新设置构件类的描述其主键属性的元信息,因为运行时刻构件的主键属性的集合可能会发生变化,重新修改元信息能够保证新版本的构件类能够及时作出相应改变;iv)修改实例的元信息,表明本次持久化操作结束,然后返回。
7.持久化控制器检查当前构件实例的元信息,如果该实例所有主键属性都已经完成了赋值,并且目标数据表中已经存在了与该构件实例匹配的记录,那么,当前是对该构件实例的某个非主键属性执行赋值方法,因此需要进行对目标数据表的对应的数据记录进行更新操作。
如图3所示,属性值查询方法getter的执行逻辑:
跟赋值方法相比,值查询方法较为简单,在构件实例属性的值查询方法被调用的时刻,构件向持久化控制器发送“读”消息,以构件实例作为消息的参数。持久化控制器查询该构件实例的所属的类是否被设置为持久态,如果否,则直接返回属性值,否则进入以下步骤;持久化控制器通过AOP提供的反射能力,获得当前需要被执行的值查询方法的名字,并且获取值查询方法的返回值类型,如果是对象引用值类型的属性,则需要首先从目标数据库中加载该对象的对应的数据记录,并用该记录实例化该目标对象实例,然后返回主键的属性取值;如果是非对象引用值类型的属性,即,普通值属性,那么对于主键属性,直接返回其取值即可;对于非主键属性,持久化控制器需要先去确认该实例的主键属性值是否有对应的数据记录存在于目标数据表中,如果存在,则还需要去查询目标数据表中的对应记录,从中获取该非主键属性对应的值,赋给该属性之后,再返回主键属性值。
这个持久化控制器同时监测系统的持久化策略配置文件的变动,及时发现和获取新设定的持久化策略,并按需动态地生成、更新、切换以及删除的相应的持久化策略(如附图1所示)。实现方法是:持久化控制器会一直在后台执行一个监控线程,监测策略配置文件的变动,一旦监测出变化,由于构件类和数据库表之间的映射策略由实际持久化机制Hibernate的持久化Session(Session:即持久化会话。一个持久化会话可以理解为一次持久化逻辑的执行过程。)负责实现,而每个Session都是利用一种策略配置文件实现的,因此持久化控制器只需要根据新的持久化策略配置文件动态地创建出新的持久化Session,解除运行态的构件实例和原有的已经不合需求的Session之间的托管关系,然后将其和新Session关联起来,最后销毁掉已经不合需求的Session,就可以无需中止应用系统的运行而实现持久化策略的动态调整了。
总之,通过以上描述,可以看出,作为实现按需动态持久化的核心组件,持久化控制器主要功能是负责记录和维护构件运行时的持久化元信息,以协调构件实例的持久化操作。即负责读取持久化策略的配置文件、获取并缓存用户对所有构件的持久化元信息、通过JDBC等规范的数据访问接口建立到持久化策略的配置文件指定的目标数据源的连接、开启后台监控线程监测配置文件的改变。当某个构件实例com的属性访问方法被调用时,com并不直接执行数据访问操作,而是首先发请求给持久化控制器,控制器接到该请求后,根据自己缓存的正在使用的持久化策略,以及调用底层持久化机制对目标数据表进行必要的查询后,返回消息给com,告知com应该以何种方式操作自身属性的状态,其方式主要包括:直接从内存中操作属性、对目标数据源中持久对象对应的数据库中的记录进行查询/更新等持久化操作;com接到回复后使用控制器提供的实际持久化机制并按其指示在目标数据源上执行持久化操作,将操作结果以消息的机制通知构件。另一方面,在运行时刻,持久化控制器会一直在后台执行一个监控线程,监测策略配置文件的变动,一旦监测出变化,立即用新策略替换掉原策略,并相应地更换自己所维护的所有构件的持久化元信息,以实现持久化功能的动态调整,这种方法参考自应用服务器技术中“热部署”机制。
与现有技术相比,本发明的积极效果为:
采用本发明的按需动态持久化方法,构件化软件系统能够在无需修改软件实现体,且无需系统本身主动感知变化,就可以获得在运行时对自身的持久化功能进行在线调整的能力,从而更加有效地抵御开放、动态、多变网络环境下用户数据需求和数据资源的多变性导致的风险,降低了软件系统持久化功能开发的复杂度和难度,提高了软件的可靠性。
附图说明
图1、本发明的动态持久化方法结构图;
图2、本发明构件属性赋值方法流程图;
图3、本发明构件属性值查询方法流程图。
具体实施方式
本节给出一个基于AOP(Aspect-Oriented Programming,面向侧面编程)思想的动态持久化技术的实现过程示例。将持久化逻辑相关代码从应用业务逻辑中完整地抽取出来,封装在持久化侧面中(持久化逻辑在实现时以持久化侧面的形式存在),再定制地编织到软件系统的各个业务模块中,使得业务代码中无需出现任何持久化逻辑相关的代码。持久化侧面的插入位置是应用系统中所有POJO(Plain Old Java Object,指不需要实现任何额外接口的普通Java对象)对象类属性的访问方法(getter/setter)的前后。持久化侧面可以利用AspectJ(目前基于Java的最完整的AOP实现)实现。在POJO对象类的持久化动作被触发的时刻,持久化侧面封装的持久化逻辑将调用持久化控制器,控制器根据当前的持久策略及时地调整构件的持久化行为,以一种间接的方式完成所需的数据访问操作。
为了验证本发明提出的按需持久化方法的有效性,选取一个开源免费的计算器程序。该程序是一个简单的Java Applet,类似Windows计算器。该程序含有一个Class文件,其中只有一个Calc类。首先,在不改动Calc类源码的情况下,为其编写持久化配置文件,选取其左右操作数、运算符、运算结果、以及存储器值为需要被持久化的属性,目标数据表为tb1。使用持久化工具为其注入持久化逻辑后启动程序,进行运算,可以发现,原本不具备持久化功能的计算器Calc此时会把运算的状态写进数据表tb1中。而后,不关闭计算器,让其继续运行。此时修改配置文件调整持久化策略:将目标数据表改为tb2;然后再次进行运算,此时新目标数据表tb2中将会出现计算器运行状态的记录。说明该应用的持久化功能已经成功地被动态地调整。
Claims (6)
1.一种构件化软件系统运行状态的按需动态持久化方法,其步骤为:
1)软件系统的开发阶段,将持久化逻辑相关的代码从业务代码中移除并注入到构件允许的插入点处;
2)软件系统的运行阶段,当构件属性的访问方法被调用时,构件发送请求消息给持久化控制器;
3)持久化控制器接到请求消息后,根据当前运行的持久化策略对目标数据表进行持久化操作,并返回消息给被调用的构件实例;
4)被调用的构件实例根据返回消息中提供的持久化机制对目标数据源进行持久化操作,并将操作结果通知构件;
其中,所述构件属性的访问方法包括:写方法、读方法;
当构件属性的写方法被调用时:
a)构件以被调用属性访问方法的构件实例作为消息的参数,向持久化控制器发送写消息;
b)持久化控制器查询当前构件实例所属的类是否被设置为持久态,如果否,则继续执行业务逻辑,否则执行步骤c);
c)持久化控制器获取当前需要被执行的赋值方法的名字,并且从该名字中截取出被赋值操作的构件实例的属性名;
d)持久化控制器检查当前构件实例是否正处于持久化过程之中,若是,则继续执行业务逻辑,否则执行步骤e);
e)持久化控制器检查该构件实例的元信息,查询该构件实例被赋值的属性信息,如果此时该属性是该构件实例的主键属性之一,则执行步骤f),否则执行步骤g);
f)持久化控制器检查该构件实例的所有主键属性,是否全部的主键属性都已赋值,如果是则更新目标数据表记录与对象,否则继续执行业务逻辑;
g)持久化控制器检查当前构件实例的元信息,如果该构件实例所有主键属性都已赋值,并且目标数据表中存在与主键值相关的记录,则对目标数据表的对应记录进行更新操作;
当构件属性的读方法被调用时:
a1)构件以被调用属性访问方法的构件实例作为消息的参数向持久化控制器发送读消息;
a2)持久化控制器查询当前构件实例所属的类是否被设置为持久态,如果否,则继续执行业务逻辑,否则执行步骤a3);
a3)持久化控制器获取当前需要被执行的值查询方法的名字,并且获取值查询方法的返回值类型:如果是对象引用值类型的属性,则首先从目标数据源中加载该对象引用值类型对应的数据记录,并用该数据记录实例化一目标对象实例,然后返回主键的属性取值;如果是非对象引用值类型的属性,对于主键属性,直接返回其取值,对于非主键属性,先确认该构件实例的主键属性值是否有对应的数据记录存在于目标数据表中,如果存在,则查询目标数据表中的对应记录,从中获取该非主键属性对应的值,赋给该非主键属性之后,再返回主键属性值。
2.如权利要求1所述的方法,其特征在于如果目标数据表中没有与该主键值匹配的数据记录,则将该构件实例的主键值作为一条新记录插入目标数据表。
3.如权利要求2所述的方法,其特征在于将该构件实例的主键值作为一条新记录插入目标数据表的方法为:
i)将该构件实例设置为持久化进行态后,将该构件实例的主键值插入目标数据表;
ii)修改该构件实例的元信息,标明该构件实例的状态已与目标数据表中的某记录关联;
iii)将该构件实例的状态版本号增加1,以区别当前的构件实例与插入前的构件实例;
iv)重新设置构件类中描述该构件实例主键属性的元信息,使得新版本的构件类进行相应改变;
v)修改该构件实例的元信息,标明本次持久化操作结束,然后继续执行业务逻辑。
4.如权利要求1所述的方法,其特征在于采用持久化工具注入将持久化相关逻辑代码注入到构件运行的插入点。
5.如权利要求4所述的方法,其特征在于所述插入点包括构件的构造时刻、构件的销毁时刻、构件的修改时刻。
6.如权利要求1所述的方法,其特征在于所述持久化控制器监测系统的持久化策略配置文件的变动,维护持久化策略,其方法为:持久化控制器运行一策略配置文件监控线程,如果策略配置文件出现变化,则持久化控制器根据新的持久化策略配置文件动态地创建出新的持久化会话,解除运行态的构件实例与原持久化会话之间的托管关系,然后将运行态的构件实例与新持久化会话建立关联,最后删除原持久化会话。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010294782 CN101944028B (zh) | 2010-09-28 | 2010-09-28 | 一种构件化软件系统运行状态的按需动态持久化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010294782 CN101944028B (zh) | 2010-09-28 | 2010-09-28 | 一种构件化软件系统运行状态的按需动态持久化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101944028A CN101944028A (zh) | 2011-01-12 |
CN101944028B true CN101944028B (zh) | 2013-10-16 |
Family
ID=43436029
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010294782 Active CN101944028B (zh) | 2010-09-28 | 2010-09-28 | 一种构件化软件系统运行状态的按需动态持久化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101944028B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102629198B (zh) * | 2012-02-29 | 2015-05-13 | 北京大学 | 软件应用中计算逻辑的按需远程执行方法 |
CN103425462B (zh) * | 2012-05-14 | 2016-12-14 | 阿里巴巴集团控股有限公司 | 一种工作流数据持久化的方法和装置 |
CN103677949B (zh) * | 2012-09-18 | 2017-05-24 | 深圳中兴力维技术有限公司 | 一种带有可变唯一值的实体缓存方法及装置 |
CN104731644A (zh) * | 2015-03-12 | 2015-06-24 | 用友网络科技股份有限公司 | 子对象操作方法与子对象操作装置 |
CN109491998B (zh) * | 2018-10-08 | 2021-06-29 | 杭州数梦工场科技有限公司 | 分析业务数据的方法、装置及电子设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002526858A (ja) * | 1998-09-17 | 2002-08-20 | ユニシス コーポレイシヨン | ソフトウェアシステム開発フレームワーク |
US7778866B2 (en) * | 2002-04-08 | 2010-08-17 | Topcoder, Inc. | Systems and methods for software development |
-
2010
- 2010-09-28 CN CN 201010294782 patent/CN101944028B/zh active Active
Non-Patent Citations (3)
Title |
---|
JP特表2002-526858A 2002.08.20 |
一种对象/关系映射隐式持久化框架;陈兴润等;《电子学报》;20071231;第35卷(第12A期);第179页第1行至第183页第5行,图1、表1-2 * |
陈兴润等.一种对象/关系映射隐式持久化框架.《电子学报》.2007,第35卷(第12A期),第179页第1行至第183页第5行,图1、表1-2. |
Also Published As
Publication number | Publication date |
---|---|
CN101944028A (zh) | 2011-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100489778C (zh) | Java程序可动态更新化实现方法 | |
US9015659B2 (en) | Method, computer program product, and system for non-blocking dynamic update of statically typed class-based object-oriented software | |
CN101944028B (zh) | 一种构件化软件系统运行状态的按需动态持久化方法 | |
EP1909173B1 (en) | Management of data of settings in an operating system of a computer | |
Seifzadeh et al. | A survey of dynamic software updating | |
CN100504789C (zh) | 控制虚拟机的方法 | |
EP2194467A1 (en) | Extend CRUD to support lifecycle management and business continuity | |
US8307058B2 (en) | Apparatus, method, and computer program product for processing information | |
Turcu et al. | Hyflow2: A high performance distributed transactional memory framework in scala | |
CN101162428A (zh) | 软件动态演化中构件运行时状态的获取和转换方法 | |
CN112463303B (zh) | Java虚拟机类加载方法及系统 | |
Gregersen et al. | Dynamic update of Java applications—balancing change flexibility vs programming transparency | |
US8423509B2 (en) | System and method for direct switching of data content | |
US20050216904A1 (en) | Non-disruptive method, system and program product for overlaying a first software module with a second software module | |
EP3286682B1 (en) | Method of managing applications in a secure element when updating the operating system | |
US20070174697A1 (en) | Generic, WSRF-compliant checkpointing for WS-Resources | |
CN108228266A (zh) | 一种Android插件框架下不同插件间启动Fragment组件的方法和装置 | |
US8260850B2 (en) | Thin-client and distributed development using data programming | |
Little et al. | Java transactions for the internet | |
WO2015196524A1 (zh) | 软件升级处理方法、装置、终端及服务器 | |
Bravetti et al. | Service oriented computing from a process algebraic perspective | |
Fleissner et al. | Epi-aspects: aspect-oriented conscientious software | |
US20050038786A1 (en) | Self-configuration of database tables | |
CN101887480A (zh) | 一种在网络游戏中实现高可扩展性ai的方法 | |
Froihofer et al. | Decoupling constraint validation from business activities to improve dependability in distributed object systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |