`
oxidy
  • 浏览: 166501 次
  • 性别: Icon_minigender_1
  • 来自: 吉林长春
社区版块
存档分类
最新评论

Xapool和oracle使用的错误分析

阅读更多

由于前期使用中的发现XAPool这个包里面有类老是报连接方面的错误,于是在参考了一篇网上的文章后把 xapool和包装连接的配置都去掉了,结果导致的是多数据源的事务根本无法实现,后来仔细想想,觉得很诡异,xapool就是jotm实现多数据源事务 的关键所在,怎么能不用?

于是仔细研究了下,发现很多问题,首先,JOTM需要的依赖--CAROL包没有JDK1.5的版本,需要自己下载源码并编译成新的ow_carol-all.jar
Xapool倒是有JDK1.5的版本xapool-1.5.0,但是跑起来老是报错,于是去下了xapool的源文件,发现居然源码都不能编译通过,还 有JDK1.5的保留字在里面,真不知道作者是怎么发布出1.5.0的.于是自己改掉关键字,并修补了一些检查不太严格的检测,并重新打了个版本.结果跑 起来还是会报错,不过是oracle报游标用尽的错误.

搜了一把就发现原来是Oracle9i有名的内存溢出bug导致:Xapool对PreparedStatement进行了Cache,同时Oracle 有一个出名的内存漏洞,PreparedStatement使用之后必须关闭,如果不关闭连续进行SQL查询会造成前面SQL的游标不能释放;

参考了网上的修改方案(xapool1.4的),又自己研究了半天,最后终于成功了,Xapool1.5的修改如下:
修改StandardConnectionPoolDataSource类的public static final int DEFAULT_PREPAREDSTMTCACHESIZE = 0,(当然也可以用配置的方式来注入)
这样就关闭了PreparedStatement的Cache,而且也不会造成什么1.4中关闭连接时的异常等等.

最后根据实际情况,设置好dataSourceXXX这几个bean的lifeTime,sleepTime,maxSize,checkLevelObject属性(具体意义和设置方法可以参考网上的说明 )
就终于可以正式使用了,测试了下,情况还不错:)

 

最近有很多朋友都说 他们配置不成功,可能是某些细节造成的吧,因为这套系统现在正在TCL总部顺利的运转着,所有我相信这个方法还是可行的,如果大家有什么问题需要我帮助, 我很乐意帮忙,有人说要我自己改的xapool1.5,因为再我改好后不久,1.6就已经发布了,所有我就没有贴出来了,有问题的朋友可以直接留言我你的 msn,我会加你的.

 

转载地址为:http://www.blogjava.net/hunteva/archive/2009/01/20/62936.html

分享到:
评论
1 楼 howesen 2012-04-20  
请问:StandardXAConnectionHandle:prepareStatement should not be used outside an EJBServer这个异常是怎么解决的呢?我用的是XAPool 1.6-bate版的

相关推荐

    xapool-1.5.0-src 源码下载

    通过深入学习和理解xapool的源码,开发者不仅可以提升对数据库连接池的理解,还能掌握如何设计和实现高效的Java组件。对于希望深入Java后端开发,尤其是数据库管理的开发者来说,研究xapool的源码无疑是一次宝贵的...

    xapool-1.6jar包

    xapool-1.6jar包,修复了以前版本的bug

    JTA 分布式事务 XAPool 1.5和1.6的所有jar包,源码包

    压缩包中的文件包括不同版本的jar包(xapool-1.5.0.jar和xapool-1.6.beta.jar),它们是XAPool的二进制库,可以直接引入到Java项目中使用。另外,还有源码包(xapool-1.5.0-src.tgz和xapool-1.6.beta-src.tgz),...

    XApool连接池报空指针错误解决

    NULL 博文链接:https://fableking.iteye.com/blog/954153

    xapool.jar

    xapool.jar............

    spring3.0+struts2.0+mybatis3.2+jta+xapool配置文件示例

    **XAPool** 是一个基于X/Open XA的JDBC连接池,提供高性能和高可用性的事务处理。在配置中,你需要定义连接池大小、超时时间、验证查询等参数,以优化数据库连接的管理。 在"studentManager"这个项目中,这些组件...

    xapool-1.4.jar

    开源XA JDBC池 com.experlog/xapool/1.4/xapool-1.4.jar

    xapool-1.6-beta.jar

    开源XA JDBC池 com.experlog/xapool/1.6-beta/xapool-1.6-beta.jar

    jotm 的 jar

    在JOTM中,XAPool jar 文件(xapool.jar)的作用是提供连接池服务,允许JOTM更有效地管理和复用数据库连接,减少创建和销毁连接的开销,提高系统性能和资源利用率。XAPool 是X/Open XA资源适配器的一个组成部分,它...

    Spring中的全局(分布式、容器)事务的项目,可以脱离JBOSS的存在

    4. 配置Spring事务管理器:使用`PlatformTransactionManager`接口的实现类`JtaTransactionManager`,并将其注入到Spring容器中。 5. 注解驱动事务:在需要进行事务控制的Service层方法上添加@Transactional注解,...

    jotm jar包

    需要注意的是,JOTM支持不同的数据源适配器,所以在实际使用时,可能还需要根据你的数据库类型(如MySQL、Oracle等)引入相应的JDBC驱动,并进行适配器配置。 总的来说,JOTM作为一个强大的开源事务管理器,为Java...

    Java-ConnectionPools.rar_连接池

    9. **XAPool**:XAPool是GigaSpaces XAP的一部分,主要用于提供高可用性和容错性的数据库连接池。XAPool与分布式事务处理相结合,适合在分布式环境中使用。 10. **rpDatabasePool2_0**:这可能是一个特定版本的...

    springboot整合jta实现多数据源事务管理

    本文将深入探讨如何配置和使用Spring Boot与JTA来管理多个数据库的数据源事务。 首先,JTA是Java平台企业版(Java EE)的一部分,它提供了一种标准的方式来管理和协调跨多个数据存储的事务。在Spring Boot中,我们...

    spring、mybatis、atomikos实现多数据源事务demo

    1. 配置Atomikos:在Spring配置文件中引入Atomikos的相关依赖,配置两个UserTransaction和XAPool,分别对应两个数据源。 2. 定义数据源:为每个数据库创建一个DataSource bean,并配置相应的数据库连接信息。 3. ...

    SSH开发所需的jar包4

    9. **xapool.jar**:这个库通常用于数据库连接池,如XAPool,它是Apache的Jakarta Commons Pool的特定实现,用于管理数据库连接的分配和回收。 10. **struts2-spring-plugin-2.1.8.1.jar**:这是Struts2的Spring...

    Java分布式开发spring+jta+jotm

    JOTM可以在Spring框架中无缝集成,通过Spring的PlatformTransactionManager接口来配置和使用。 **Spring 配置JTA和JOTM** 在Spring中使用JTA和JOTM,首先需要在项目中引入JOTM的依赖。接着,你需要配置Spring的`...

    纯spring多database

    5. **Atomikos集成**:集成Atomikos到Spring项目中,需要配置`UserTransaction`和`XAPool`,以及相应的`TransactionManager`。然后,可以通过Spring的`jee:jta-transaction-manager`来声明一个JTA事务管理器,这样就...

    分布式事务操作之Spring+JTA+mybatis源码

    - **XAPool 或其他连接池**:为了支持JTA,你需要一个JTA兼容的数据源,如XAPool,它可以提供JTA连接池。 - **Atomikos、Bitronix等JTA实现**:这些第三方库实现了JTA规范,可以用来管理分布式事务。 6. **配置...

    spring+druid+AtomikosDataSource实现多数据源切换及分布式事务控制

    AtomikosDataSource是基于Atomikos实现的XAPool,可以协调跨多个数据源的ACID(原子性、一致性、隔离性和持久性)事务。在Spring中集成Atomikos,可以实现全局的分布式事务管理,确保在分布式环境下的数据一致性。 ...

    简易搭建ssh 框架

    不过需要注意,现代的Java Web开发更多倾向于使用Spring Boot和Spring MVC,它们提供了更简洁的配置和自动化特性,降低了框架集成的复杂性。尽管如此,理解SSH框架的原理对于深入学习Java Web开发仍然是有价值的。

Global site tag (gtag.js) - Google Analytics