spring下jotm jta实现小结

需求是从sql2005读取数据,然后写到另外一个oracle库中,尝试过jotm和atomikos两种,很多人都说atomikos好些,但它对sql2005的支持好像不太好,配置后有些报错,官方文档所sql2005配置起来比较麻烦,需要在数据库端作配置的。

所以使用jotm,使用的版本是xapool-1.5.0。过程中遇到了一些问题,由于需要数据库遇到断网、数据库重启等情况后能自动重连,所以需要配置checkLevelObject,但配置了<property name="checkLevelObject"><value>3</value></property>之后,oracle端就遇到游标溢出的bug和数据库连接数一直增长的情况,要等很久才会释放的情况。

通过在网上的搜索,最后修改了源代码的2个地方:

org.enhydra.jdbc.standard.StandardConnectionPoolDataSource里的
public static final int DEFAULT_PREPAREDSTMTCACHESIZE = 16;
将16改为0,不缓存。

org.enhydra.jdbc.pool.GenericPool里的
public static final long DEFAULT_SLEEPTIME = 300000; // 5 minutes
将300000(5分钟)改为30000(30秒),DEFAULT_SLEEPTIME设置的是清除无用连接的间隔时间,30秒清除一次,那样连接数就不会一直增长而要等5分钟才释放。另外在配置文件里配置SLEEPTIME属性似乎无效,只能手工改源码的这个地方。

在附件里上传了一份我修改过后的1.5.0版本的xapool.jar

你可能感兴趣的:(jotm)