com.opensymphony.workflow.spi.memory
*略
com.opensymphony.workflow.spi.ofbiz
略
com.opensymphony.workflow.spi.ojb
先来了解一下ojb吧。它的大本营在http://db.apache.org/ojb/。ObJectRelationalBridge-OJB是基于XML的对象/关系映射工具.OJB提供一些高级的特性如:对象缓存,延迟加载,利用事务隔离级别的结构进行分布式管理,支持悲观与乐观锁.OJB还提供了一个灵活的配置与插件机制以便可以扩展加入自己的功能。
随便下了几篇关于如何使用ojb作为存储层的文章,基本可以理解为与hibernate同类的东西,而我对这部分还不是特别急需,所以跳多,大致看了一下类,没细入的看,基本与hibernate的相似。
com.opensymphony.workflow.spi.prevayler
先来了解一下什么是Prevayler,http://www.prevayler.org/wiki.jsp是它的大本营,简单的来说几句它到底是啥东西,我也是搜了几篇文章才了解的。
Prevayler是一个能够在内存保存对象,同时在系统重新启动后,不会丢失数据的一个产品。参考 www.prevayler.org
Prevayler实现了可持久的内存数据存储。Prevayler的原理是在执行数据操作前,都会记录一条操作日志。当系统关闭或down,然后恢复的时候,将会把日志文件中记录的操作重新执行一遍,以保持和系统停止时的相同的状态。
Prevayler除了能够保持数据的持久性。还提供了系统快照的能力,即在某一个时刻,对系统中的数据保存到文件中。这样,下次系统恢复的时候,只要读入快照文件中的数据,然后执行快照完成以后的那些事物操作即可。
Prevayler还提供的复制功能。可以启动多个Prevayler的实例,其中一个作为hot,其他的作为replia。hot上所有的事物操作都自动同步到replia上。这样一来可以保证replia和hot数据的一致性。目前复制功能还不是很成熟,如果hot系统crash了,replia不能接管成为hot系统。
由于Prevayler的数据是保存在内存中。Prevayler的容量就是受到内存大小的限制。理论上,Prevayler的速度受限于记录事物操作日志的能力。由于Prevayler是Java 实现的,它的序列化能力不是很理想。在工作PC上测试的结果只有100次/每秒左右的能力。不过,网上也有人声称达到过600次/每秒的能力。Prevaler还有个很大的优点是一个Open Source 的项目,而且设计上非常简洁。
这部分我只作为了解概念,暂时不会做更为深入的了解。