(J2EE)关于 proxool 连接池自动断开连接的问题
数据持久层使用Hibernate3.1连接池使用了Proxool0.8.3症状描述:正常操作没有问题,如果过上一段时间不操作,比较机器闲置半小时(TOMCAT容器正常工作...
数据持久层使用 Hibernate 3.1
连接池使用了 Proxool 0.8.3
症状描述: 正常操作没有问题,如果过上一段时间不操作,比较机器闲置半小时(TOMCAT容器正常工作)左右,当你再次操作的时候,报500错误,说connection.close()方法已经被执行。错误详情如下:
ERROR[http-8080-Processor23](StandardWrapperValve.java:253)-Servlet.service() for servlet action threw exception
com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Connection.close() has already been called. Invalid operation in this state.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:981)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
at com.mysql.jdbc.ConnectionImpl.getMutex
.......
--------------------------------------------------------
下面是proxool的配置文件,贴出来:
<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
<proxool>
<alias>dbpool</alias>
<driver-url>jdbc:mysql://localhost:3306/db_puaite?useUnicode=true&characterEncoding=utf-8</driver-url>
<driver-class>org.gjt.mm.mysql.Driver</driver-class>
<driver-properties>
<property name="user" value="root" />
<property name="password" value="186899" />
</driver-properties>
<house-keeping-sleep-time>90000</house-keeping-sleep-time>
<maximum-active-time>60000</maximum-active-time>
<maximum-new-connections>100</maximum-new-connections>
<prototype-count>5</prototype-count>
<maximum-connection-count>50</maximum-connection-count>
<minimum-connection-count>10</minimum-connection-count>
</proxool>
</something-else-entirely> 展开
连接池使用了 Proxool 0.8.3
症状描述: 正常操作没有问题,如果过上一段时间不操作,比较机器闲置半小时(TOMCAT容器正常工作)左右,当你再次操作的时候,报500错误,说connection.close()方法已经被执行。错误详情如下:
ERROR[http-8080-Processor23](StandardWrapperValve.java:253)-Servlet.service() for servlet action threw exception
com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Connection.close() has already been called. Invalid operation in this state.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:981)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
at com.mysql.jdbc.ConnectionImpl.getMutex
.......
--------------------------------------------------------
下面是proxool的配置文件,贴出来:
<?xml version="1.0" encoding="UTF-8"?>
<something-else-entirely>
<proxool>
<alias>dbpool</alias>
<driver-url>jdbc:mysql://localhost:3306/db_puaite?useUnicode=true&characterEncoding=utf-8</driver-url>
<driver-class>org.gjt.mm.mysql.Driver</driver-class>
<driver-properties>
<property name="user" value="root" />
<property name="password" value="186899" />
</driver-properties>
<house-keeping-sleep-time>90000</house-keeping-sleep-time>
<maximum-active-time>60000</maximum-active-time>
<maximum-new-connections>100</maximum-new-connections>
<prototype-count>5</prototype-count>
<maximum-connection-count>50</maximum-connection-count>
<minimum-connection-count>10</minimum-connection-count>
</proxool>
</something-else-entirely> 展开
3个回答
展开全部
楼主问的是: proxool隔一段时间之后自动断开连接的问题,而不是如何使用的问题。所以说 一楼的答案没有切中要害。
ljf113190451 给出的地址,就是演示了在传统的JDBC下如何使用proxool,而且在他这个演示的配置中,也存在和楼主一样的问题,看看他的配置:
<maximum-active-time>30000</maximum-active-time>
在看看楼主的配置:
<maximum-active-time>60000</maximum-active-time>
这个配置的意思就是,house会自动检测每一个线程的连接时间,如果有一个线程的连接时间超过了这个配置的时间(ms),那么house会自动杀掉该线程,不管该线程是不是active的照杀不误。所以楼主隔一段时间之后,在操作就会提示connection.close()方法已经被调用,并返回500错误的提示。因为这个线程已经被杀掉,关闭了和数据库的连接。如果在开辟一个新的线程来访问,就不会出错了。
ljf113190451 给出的地址,就是演示了在传统的JDBC下如何使用proxool,而且在他这个演示的配置中,也存在和楼主一样的问题,看看他的配置:
<maximum-active-time>30000</maximum-active-time>
在看看楼主的配置:
<maximum-active-time>60000</maximum-active-time>
这个配置的意思就是,house会自动检测每一个线程的连接时间,如果有一个线程的连接时间超过了这个配置的时间(ms),那么house会自动杀掉该线程,不管该线程是不是active的照杀不误。所以楼主隔一段时间之后,在操作就会提示connection.close()方法已经被调用,并返回500错误的提示。因为这个线程已经被杀掉,关闭了和数据库的连接。如果在开辟一个新的线程来访问,就不会出错了。
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是一家国内优质海外HTTP代理商,拥有一个庞大的IP资源池,覆盖200多个地区,IP数量大且匿名度高。其优点还包括超高并发、稳定高效、技术服务等特点,同时提供HTTP、HTTPS以及SOCKS5协议支持。此外,Sto...
点击进入详情页
本回答由Storm代理提供
展开全部
<house-keeping-sleep-time>90000</house-keeping-sleep-time>
显示proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁
你设置的<maximum-active-time>60000</maximum-active-time>
超过了最大活动时间,出现断开连接的错误。
补充经常出现的问题:
1)<alias>DBPool</alias>这个是给连接池取一个别名,在hibernate配置文件中将引用这个别名。
2)<driver-url>jdbc:mysql://localhost:3306/工程名?useUnicode=true&characterEncoding=UTF-8</driver-url>
这个是驱动的路径,我们的项目采用了mysql,使用其余数据库需要更改成对应的。还有需要注意的是工程名要以数据库名为准。
3)<driver-class>om.mysql.jdbc.Driver</driver-class>
这个是数据库驱动类,不同的数据库采用不同的驱动类,即使采用同一种数据库也有多种驱动类,所以一定要选取准确。
4) <driver-properties>
<propertyname="user"value="*** "/>
<propertyname="password"value="*** "/>
</driver-properties>
这个显示数据库的用户名和密码。
5)<house-keeping-sleep-time>90000</house-keeping-sleep-time>
这个显示proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁
6)<maximum-new-connections>20</maximum-new-connections>
这个 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受
7)<prototype-count>5</prototype-count>
这个显示最少保持的空闲连接数
8)<maximum-connection-count>100</maximum-connection-count>
这个显示允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定
9)<minimum-connection-count>10</minimum-connection-count>
这个显示最小连接数
显示proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁
你设置的<maximum-active-time>60000</maximum-active-time>
超过了最大活动时间,出现断开连接的错误。
补充经常出现的问题:
1)<alias>DBPool</alias>这个是给连接池取一个别名,在hibernate配置文件中将引用这个别名。
2)<driver-url>jdbc:mysql://localhost:3306/工程名?useUnicode=true&characterEncoding=UTF-8</driver-url>
这个是驱动的路径,我们的项目采用了mysql,使用其余数据库需要更改成对应的。还有需要注意的是工程名要以数据库名为准。
3)<driver-class>om.mysql.jdbc.Driver</driver-class>
这个是数据库驱动类,不同的数据库采用不同的驱动类,即使采用同一种数据库也有多种驱动类,所以一定要选取准确。
4) <driver-properties>
<propertyname="user"value="*** "/>
<propertyname="password"value="*** "/>
</driver-properties>
这个显示数据库的用户名和密码。
5)<house-keeping-sleep-time>90000</house-keeping-sleep-time>
这个显示proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁
6)<maximum-new-connections>20</maximum-new-connections>
这个 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受
7)<prototype-count>5</prototype-count>
这个显示最少保持的空闲连接数
8)<maximum-connection-count>100</maximum-connection-count>
这个显示允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定
9)<minimum-connection-count>10</minimum-connection-count>
这个显示最小连接数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这里有比较详细的介绍
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询