走自己的路

路漫漫其修远兮,吾将上下而求索

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  50 随笔 :: 4 文章 :: 118 评论 :: 0 Trackbacks

Java Persistence, Transaction and ORM

java持久化 事务管理和 OR Mapping
     摘要: 在用户修改了领域对象的值后,我们有时需要记录下用户的改动。比如对一些关键业务对象的改动有时往往需要发邮件通知客户。有时用户可能想查阅所有历史的改动,甚至有可能会改回原先的值。领域逻辑关系往往比较复杂,这时我们会使用到ORM Framework。本文以toplink为例,讲述如何利用toplink编写一个完成此功能的简易Framework,我们暂且把它称为ActionMemed。
  阅读全文
posted @ 2009-11-29 13:37 叱咤红人 阅读(1423) | 评论 (2)  编辑

     摘要: 在Oracle Application Server环境下OC4J Instance下的每个process的jvm的rmi端口是动态分配的,如果能解决这个动态的问题,就可以使用ORMI作为jndi的provider url。但是需要注意的是如果是在server启动时初始化toplink session,需要等待JmsServer线程执行完毕。  阅读全文
posted @ 2008-12-09 18:00 叱咤红人 阅读(1255) | 评论 (0)  编辑

     摘要: 在分布式应用中,单个业务应用的toplink运行在多个jvm上,同时开启了会话缓存,而这些在多个jvm上会话缓存中的domain对象就需要进行同步,这样可以及时拿到最新的domain对象而不需要每次都查询database,这大大减少了乐观锁冲突。在Oracle Application Server上Ormi端口是动态分配的,而opmn request端口氏固定的,所以我们用opmn作为jndi lookup的url。经过测试OC4J in memory jms作为同步消息的传输和发现方式效率是最高的,所以采用OC4J in memory jms作为消息同步的传输方式。具体实现方法参见本文。  阅读全文
posted @ 2008-12-04 07:00 叱咤红人 阅读(1206) | 评论 (0)  编辑

     摘要: 晚上要下班的时候,application team那里使用Tibco EMS做消息集成服务时候出了bug,错误是:java.sql.SQLException: 当全局事务处理处于活动状态时, 无法调用方法 'commit',应该是在全局事务中使用了本地事务并提交了。帮忙看了一下,它的oc4j, toplink, spring的使用上都存在着一些问题,并把要注意的地方总结了一下。包括oc4j,toplink,spring三块。  阅读全文
posted @ 2008-11-14 21:48 叱咤红人 阅读(2189) | 评论 (11)  编辑

     摘要: 在java端调用存储过程的时候需要存储过程串行的执行,如果使用synchronized lock在应用服务器突然down掉的情况下会出现问题,因为session并没有立即断掉,后台的存储过程还在继续执行,这样如果应用服务器立即重启,再调用该存储过程或者其他需要一起串行化处理的存储过程就会违反同步执行的原则,所以我们必须把锁放在oracle db端,利用oracle锁机制来完成存储过程的同步,文章总结了一下在java端如何使用oracle这个用户锁机制。  阅读全文
posted @ 2008-08-25 14:12 叱咤红人 阅读(1773) | 评论 (0)  编辑

     摘要: 上次用Coherence实现缓存数据同步的transport manager之后,对它进行了压力测试并和EMS JMS和 OracleAS JMS(内存)进行了性能对比。文中描述了测试的过程,并共享了代码和测试结果。  阅读全文
posted @ 2008-06-13 14:46 叱咤红人 阅读(2368) | 评论 (1)  编辑

     摘要: Toplink提供了很强大的Cache功能,利用cache可以大大减少直接和DB通信的次数,特别是读事务比较多的情况下。在分布式应用中,多个toplink session cache之间需要即时的同步数据,保证各个cache中的数据都是最新的数据,避免频繁地出现stale数据或乐观锁异常。Toplink默认支持的两种同步机制:JMS和RMI,有时为了考虑一些特殊的需求,必须性能,我们可能需要自定义一个Toplink的Transport Manager,本文给出了一个用Oracle Coherence实现Toplink Tranport Manager的具体例子,注意只是用了Coherence的通信并没有把Coherence整合成Toplink的Session Cache。  阅读全文
posted @ 2008-05-24 17:37 叱咤红人 阅读(2226) | 评论 (0)  编辑