Proxool 连接池销毁问题

Proxool是常用开源连接池,最近遇到点该连接池销毁时的问题, 记录下来。

项目中使用JPA的hibernate实现, persistence.xml中hibernate配置的连接池是proxool. 遇到的问题是项目中有很多后台运行的service, 这些service在servlet 容器做shutdown操作时候会先被关闭,最后在contextDestroy方法中做clean操作。 

在调试中发现当servlet容器的JVM在接到shutdown操作时候,先清理了proxool的连接池线程prototyper, 然后才调用规范约定的contextDestroy()方法, 导致该方法中的service方法需要写一些shutdown操作的log时产生大量异常,类似于:

 

Attempt to refer to a unregistered pool by its alias XXX

 

找了很久为什么Jetty在关闭时会先清理proxool的线程,而不是等contextDestroy之后清理, 发现proxool 0.9.0的release中写到:

- Added
ProxoolFacade.disableShutdownHook so that you can choose to explicitly shutdown
Proxool programatically. This is useful because the order that the JVM calls
shutdown hooks isn't easily controlled and you might want to shutdown Proxool
*after* you've done some cleaning up yourself.

 

原来是proxool自己向JVM注册了shutdown hook, 在JVM关闭时会自动被调用, 在程序代码中显式调用ProxoolFacade.disableShutdownHook后禁止proxool 线程被JVM立即关闭后问题解决。

 

时间: 2024-11-25 15:14:25

Proxool 连接池销毁问题的相关文章

服务器-使用proxool连接池,cpu占用率很高

问题描述 使用proxool连接池,cpu占用率很高 给别人用springmvc 做的一个网站,数据库用的proxool配的连接池,服务器用的tomcat.但是启动后cpu占用率一下就上去了,阿里云的服务器,单核,2G内存,windows 2012 我用visualvm查看运行情况 <?xml version="1.0" encoding="UTF-8"?> <something-else-entirely> <proxool>

大牛们,看过来:proxool连接池 获取连接时数组越界

问题描述 如题:用proxool连接池时产生如下错误,不知道是什么原因?按照常理来说这是不可能,获取连接时,连接池的大小是17,怎么会直接指向20,而不是:18呢?org.logicalcobwebs.proxool.hibernatePool-1585946[Thread-165]ERRORorg.logicalcobwebs.proxool.hibernatePool-Problemgettingconnectionjava.lang.IndexOutOfBoundsException:In

急求帮忙:SSH 使用 proxool 连接池的 报错问题。谢谢了。

问题描述 问题报错的log是:[14:51:11.774] javax.servlet.ServletException: org.springframework.orm.hibernate3.HibernateSystemException: connnection proxy not usable after transaction completion; nested exception is org.hibernate.HibernateException: connnection pr

Spring2.5配置proxool连接池

首先按正常步骤配置好proxool连接池,在web.xml中配置自动监控,做简单测试保证该连接池能够正常工作.proxool.xml配置如下: 1.proxool.xml <?xml version="1.0" encoding="ISO-8859-1"?><!-- the proxool configuration can be embedded within your own application''s.Anything outside th

Hibernate中的proxool连接池怎么样配置?

问题描述 目前在做的项目中遇到了Java中的数据库连接池技术,以前的全是用Hibernate中的默认配置的数据池,请问各位大虾.怎样配置Hibernate的proxool数据连接池?急用!谢谢 解决方案 解决方案二:网上一搜就有给你找个解决方案三:谢谢楼上的

J2EE开发技术点6:Proxool数据库连接池

前言 Proxool也是目前主流的数据库连接池,Proxool是一种Java数据库连接池技术.也是sourceforge下的一个开源项目,这个项目提供一个健壮.易用的连接池,最为关键的是这个连接池提供监控的功能,方便易用,便于发现连接泄漏的情况.下面是对Proxool连接池的一些技术小结 使用Proxool连接池方式 在官方提供的文档中,有多种使用Proxool的方式,这里只介绍两种:一种是通过配置文件的方式使用Proxool:一种是通过直接设置属性的方式使用.其中使用了Proxool连接池中的

Java Hibernate 之连接池详解

Hibernate支持第三方的连接池,官方推荐的连接池是C3P0,Proxool,以及DBCP.在配置连接池时需要注意的有三点: 一.Apche的DBCP在Hibernate2中受支持,但在Hibernate3中已经不再推荐使用,官方的解释是这个连接池存在缺陷.如果你因为某种原因需要在Hibernate3中使用DBCP,建议采用JNDI方式. 二.默认情况下(即没有配置连接池的情况下),Hibernate会采用内建的连接池.但这个连接池性能不佳,且存在诸多BUG(笔者就曾在Mysql环境下被八小

spring 注解-spring容器已经配置好数据连接池,类里面用jdbc方式是不是就不管用了

问题描述 spring容器已经配置好数据连接池,类里面用jdbc方式是不是就不管用了 求大肾解答,driud阿里巴巴的数据连接池bean配置在spring容器里面!我在JAVA类中@resource注入,datasource拿到连接!是null!数据库什么链接信息都是对的.求大神解答druid连接池,获取连接的详细代码,不要沉 解决方案 你有没有在JAVA类中写set方法 按理说不写也对啊 解决方案二: spring配置ibatis的jdbc方式和proxool连接池方式 解决方案三: 不要沉啊

DBCP、C3P0、Proxool 、 BoneCP开源连接池的比较(完全转载)

本文章完全为转载内容. 转载地址:http://blog.csdn.net/july_2/article/details/18843419 转载的原因是,好好的一篇文章,他 给复制了N编.    简介   使用评价  项目主页  DBCP DBCP是一个依赖Jakarta commons-pool对象池机制的数据库连接池.DBCP可以直接的在应用程序用使用 可以设置最大和最小连接,连接等待时间等,基本功能都有,此连接池的持续运行的稳定性还是可以,不过速度稍慢,在大并发量的压力下稳定性有所下降,此