工作中遇到的问题,记录一下
项目中用的连接池版本是proxool-0.9.1
用jdbc来批量操作数据.
连接池的配置maximumActiveTime配的是180000,即(3min)
今天由于网络原因,插入操作11w条数据用了3min多还没好,结果被连接池强行关掉了.
抛出异常,理论上,应该回滚掉所有操作的.可是查看插入记录,入库了10w多条,还有1w多条没进去.
抛出的异常信息
rollback error !
java.sql.SQLException: Couldn't perform the operation rollback: You can't perform any operations on this connection. It has been automatically closed by Proxool for some reason (see logs)
jdbc获取链接代码
try{
conn = SessionFactoryUtils.getDataSource(getSessionFactory()).getConnection();
conn.setAutoCommit(false);
//批量操作
conn.commit();
}catch(Exception e){
try {
conn.rollback();
} catch (SQLException e1) {
logger.error("rollback error !", e1);
}
}
spring的事务已关,此方法上加了这个@Transactional(propagation=Propagation.NEVER)
在proxool官网的bug反映里面关于这个问题有人这样写到
Some JDBC implementations - like Oracle - perform an implicit commit before closing a connection, therefore Proxool should always - or at least configurable -rollback the connection before closing it. Otherwise an inconsistent state might be written to the database if the Pool is shutdown via ShutdownHook.
于是我发现悲摧了.08年提交的问题,proxool一直没给予答复和解决办法...
看来这个问题,只能把maximumActiveTime这个参数时间设长,来尽量避免出现这种问题了.
我自己尝试了下在commit之前调用conn.close();数据却没有提交进数据库,估计这么调用的时候,oracle的jdbc有做rollback操作.
而连接池那边在直接杀掉进程之前没做rollback操作...
目前除了把这个参数maximumActiveTime调大之外没想到其他解决办法.
分享到:
相关推荐
第一步:hibernate.cfg.xml 加入: ...ProxoolConf.xml ...--proxool只能管理由自己产生的连接--> <driver-url> jdbc:microsoft:sqlserver://243.155.187.236:1433;DatabaseName=study </driver-url> <driver-
hibernate+proxool+Oracle库
spring+proxool配置spring+proxool配置spring+proxool配置
ssh2注册登录案例,注解+proxool连接池+sf4j记录日志
连接池配置文件 博文链接:https://yanghaiskys.iteye.com/blog/215424
这个是个用spring+dwr+proxool+mysql5.0写的一个显示和删除的小程序
spring3.0.4+hibernate3.5.0+proxool 0.9.1+jstl整合最新的JAVA WEB框架,没有使用struts2,视图层使用spring MVC.
本项目采用当前主流的MVC和IOC框架spring 3、优秀的ORM框架hibernate和超级厉害的proxool数据库连接池。这个工程demo,是本人在企业应用中的项目缩影,绝对实用于企业的应用。 适合朋友: 1.一直用单独的servlet和...
proxool连接池配置详解 proxool连接池配置详解 proxool连接池配置详解 proxool连接池配置详解 proxool连接池配置详解 proxool连接池配置详解
struts2.2.3+spring2.5.6+hibernate3.2+proxool0.9.1 proxool数据库连接池例子 0资源下载
框架整合Spring MVC3.23+Spring3.23+Hibernate4.2.3+Activiti5.16.3,三层架构dao,service,controller,使用proxool连接池(已配置好监听器),默认链接mysql数据库。可根据项目开发需要,做适当修改,各项配置齐全...
有oracle连接池proxool 用到的jar 包 还有jdbc的驱动包 proxool的源码包 Java实现oracle proxool 单态的例子等
允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的 等待请求数由maximum-new-connections决定 --> <maximum-connection-count>100</maximum-connection-count> - <!-- 最小连接数 --> ...
有关spring+proxool整合配置
项目实用的proxool连接池配置文件,每个标签都有注释,可以直接拿来使用
有oracle连接池proxool 用到的jar 包 还有jdbc的驱动包 proxool的源码包 Java实现oracle proxool 单态的例子等
struts hibernate sping sql2000 proxool displaytag 源码 实例 struts2.3.4.1+hibernate3.6.10+sping3.1.2(sql2000+proxool)+displaytag原创代码实例 sqlserver2000搭建ssh proxool连接池