-
使用proxool连接池几个小时之后总是会报错(小弟分不多,包涵!)5
最近用proxool连接池,几个小时之后总会出现下面的报错,希望大侠能赐教帮帮我,网上收了些方法也不能解决。
环境:tomcat6.0+proxool-0.9.01+hibernate3.1+mysql5.0
proxool.xml:<?xml version="1.0" encoding="UTF-8"?> <something-else-entirely> <proxool> <alias>mysqlProxool</alias> <driver-url>jdbc:mysql://127.0.0.1/shaiyaya</driver-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <driver-properties> <property name="user" value="root" /> <property name="password" value="banpeizhi" /> </driver-properties> <maximum-connection-count>100</maximum-connection-count> <minimum-connection-count>10</minimum-connection-count> <maximum-active-time>6000000</maximum-active-time> <house-keeping-sleep-time>120000</house-keeping-sleep-time> <maximum-new-connections>10</maximum-new-connections> <prototype-count>5</prototype-count> <test-before-use>true</test-before-use> <house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql> </proxool> </something-else-entirely>
hibernate.cfg.xml:
<session-factory> <property name="hibernate.proxool.pool_alias">mysqlProxool</property> <property name="hibernate.proxool.xml">proxool.xml</property> <property name="hibernate.connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</property> <property name="hibernate.proxool.existing_pool">true</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.cache.use_query_cache">true</property> <!--是否将运行期生成的SQL输出到日志以供调试--> <property name="show_sql">false</property> <!-- 事务管理类型 (显示配置)--> <property name="hibernate.transaction.factory_class"> org.hibernate.transaction.JDBCTransactionFactory </property> <!-- 映射资源文件 --> <mapping resource="com/shaiyaya/dao/Report.hbm.xml" /> ……
页面报错:
Struts Problem Report Struts has detected an unhandled exception: Messages: Couldn't perform the operation prepareStatement: You can't perform any operations on this connection. It has been automatically closed by Proxool for some reason (see logs). FreeMarker template error! Method public java.lang.String org.hibernate.exception.NestableRuntimeException.getMessage(int) threw an exception when invoked on org.hibernate.exception.GenericJDBCException: could not execute query The problematic instruction: ---------- ==> ${msg[0]} [on line 68, column 29 in org/apache/struts2/dispatcher/error.ftl] ---------- Java backtrace for programmers: ---------- freemarker.template.TemplateModelException: Method public java.lang.String org.hibernate.exception.NestableRuntimeException.getMessage(int) threw an exception when invoked on org.hibernate.exception.GenericJDBCException: could not execute query at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:130) at freemarker.ext.beans.SimpleMethodModel.get(SimpleMethodModel.java:138) at freemarker.core.DynamicKeyName.dealWithNumericalKey(DynamicKeyName.java:111) at freemarker.core.DynamicKeyName._getAsTemplateModel(DynamicKeyName.java:90) at freemarker.core.Expression.getAsTemplateModel(Expression.java:89) at freemarker.core.Expression.getStringValue(Expression.java:93) at freemarker.core.DollarVariable.accept(DollarVariable.java:76) at freemarker.core.Environment.visit(Environment.java:208) at freemarker.core.MixedContent.accept(MixedContent.java:92) at freemarker.core.Environment.visit(Environment.java:208) at freemarker.core.IfBlock.accept(IfBlock.java:82) at freemarker.core.Environment.visit(Environment.java:208) at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179) at freemarker.core.Environment.visit(Environment.java:415) at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102) at freemarker.core.Environment.visit(Environment.java:208) at freemarker.core.MixedContent.accept(MixedContent.java:92) at freemarker.core.Environment.visit(Environment.java:208) at freemarker.core.IfBlock.accept(IfBlock.java:82) at freemarker.core.Environment.visit(Environment.java:208) at freemarker.core.MixedContent.accept(MixedContent.java:92) at freemarker.core.Environment.visit(Environment.java:208) at freemarker.core.Environment.process(Environment.java:188) at freemarker.template.Template.process(Template.java:237) at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:703) at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485) at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:102) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.shaiyaya.filter.LoginFilter.doFilter(LoginFilter.java:34) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:619) Caused by: java.lang.NullPointerException at freemarker.ext.beans.SimpleMemberModel.unwrapArguments(SimpleMemberModel.java:85) at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:106) ... 44 more
问题补充:<div class="quote_title">shjavaer 写道</div><div class="quote_div">你的错误信息是配置在一张表里面吗?如果是,看下错误信息表的hibernate配置文件吧</div> <br /> <br /> <br />没懂你的意思诶,hibernate的配置文件我贴上了呀
问题补充:<div class="quote_title">shjavaer 写道</div><div class="quote_div">mysql的话,8个小时后数据库服务器端的连接会自动断开, <br /> <br /><!-- 在分配连接前后是否进行有效性测试,这个是解决本问题的关键 --> <br /><test-before-use>true</test-before-use> <br /><test-after-use>true</test-after-use> <br /><!-- 用于测试的SQL语句 --> <br /><house-keeping-test-sql>SELECT CURRENT_USER</house-keeping-test-sql> <br /> <br /><a href="http://blog.csdn.net/jsx112/article/details/5892551" target="_blank">http://blog.csdn.net/jsx112/article/details/5892551</a></div> <br /> <br />proxool连接池默认连接的生命是4小时(见maximum-connection-lifetime这个参数的默认设置),所以在mysql8小时出现之前proxool已经自动kill掉连接了。这样就应该不是mysql8小时的问题了把(?)
问题补充:<div class="quote_title">shjavaer 写道</div><div class="quote_div">看错误栈,应该是程序中有问题,转到error.ftl中取${msg[0]}时抛的错,你可以看看日志,是什么问题</div> <br /> <br />下面是日志中的错误:(貌似和页面的报错是一样的。Caused by: java.lang.NullPointerException和could not execute query这两个报错我自己觉得应该是hibernate的sessionfactory调用getSession方法时得到的是null,所以才会出现上面的两个错误。不过这是怎么引起的呢?) <br /> <br />ERROR - Couldn't perform the operation prepareStatement: You can't perform any operations on this connection. It has been automatically closed by Proxool for some reason (see logs). <br />ERROR - <br />Method public java.lang.String org.hibernate.exception.NestableRuntimeException.getMessage(int) threw an exception when invoked on org.hibernate.exception.GenericJDBCException: could not execute query <br />The problematic instruction: <br />---------- <br />==> ${msg[0]} [on line 68, column 29 in org/apache/struts2/dispatcher/error.ftl] <br />---------- <br /> <br />Java backtrace for programmers: <br />---------- <br />freemarker.template.TemplateModelException: Method public java.lang.String org.hibernate.exception.NestableRuntimeException.getMessage(int) threw an exception when invoked on org.hibernate.exception.GenericJDBCException: could not execute query <br /> at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:130) <br /> at freemarker.ext.beans.SimpleMethodModel.get(SimpleMethodModel.java:138) <br /> at freemarker.core.DynamicKeyName.dealWithNumericalKey(DynamicKeyName.java:111) <br /> at freemarker.core.DynamicKeyName._getAsTemplateModel(DynamicKeyName.java:90) <br /> at freemarker.core.Expression.getAsTemplateModel(Expression.java:89) <br /> at freemarker.core.Expression.getStringValue(Expression.java:93) <br /> at freemarker.core.DollarVariable.accept(DollarVariable.java:76) <br /> at freemarker.core.Environment.visit(Environment.java:208) <br /> at freemarker.core.MixedContent.accept(MixedContent.java:92) <br /> at freemarker.core.Environment.visit(Environment.java:208) <br /> at freemarker.core.IfBlock.accept(IfBlock.java:82) <br /> at freemarker.core.Environment.visit(Environment.java:208) <br /> at freemarker.core.IteratorBlock$Context.runLoop(IteratorBlock.java:179) <br /> at freemarker.core.Environment.visit(Environment.java:415) <br /> at freemarker.core.IteratorBlock.accept(IteratorBlock.java:102) <br /> at freemarker.core.Environment.visit(Environment.java:208) <br /> at freemarker.core.MixedContent.accept(MixedContent.java:92) <br /> at freemarker.core.Environment.visit(Environment.java:208) <br /> at freemarker.core.IfBlock.accept(IfBlock.java:82) <br /> at freemarker.core.Environment.visit(Environment.java:208) <br /> at freemarker.core.MixedContent.accept(MixedContent.java:92) <br /> at freemarker.core.Environment.visit(Environment.java:208) <br /> at freemarker.core.Environment.process(Environment.java:188) <br /> at freemarker.template.Template.process(Template.java:237) <br /> at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:703) <br /> at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:485) <br /> at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395) <br /> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) <br /> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) <br /> at org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:102) <br /> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) <br /> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) <br /> at com.shaiyaya.filter.LoginFilter.doFilter(LoginFilter.java:34) <br /> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) <br /> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) <br /> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) <br /> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) <br /> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) <br /> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) <br /> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) <br /> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) <br /> at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) <br /> at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) <br /> at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) <br /> at java.lang.Thread.run(Thread.java:619) <br />Caused by: java.lang.NullPointerException <br /> at freemarker.ext.beans.SimpleMemberModel.unwrapArguments(SimpleMemberModel.java:85) <br /> at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:106) <br /> ... 44 more <br /> <br />
问题补充:<div class="quote_title">shjavaer 写道</div><div class="quote_div"><pre name="code" class="java">Caused by: java.lang.NullPointerException</pre> <br />这是是主要的,看看这个怎么产生的</div> <br /> <br />could not execute query <br />这个是NullPointerException引起的,应该是hibernatefactory开启session的时候报的错,即connection已经失效而引起? <br />hibernate开启session的方法: <br />public static Session getSession() throws HibernateException { <br /> Session session = (Session) threadLocal.get(); <br /> <br /> if (session == null || !session.isOpen()) { <br /> if (sessionFactory == null) { <br /> rebuildSessionFactory(); <br /> } <br /> session = (sessionFactory != null) ? sessionFactory.openSession() <br /> : null; <br /> threadLocal.set(session); <br /> } <br /> <br /> return session; <br /> }
问题补充:自己到现在还没解决,今天又出现这个报错了,哪位同行兄弟有解,拿出来分享下嘛。 <br />快受不鸟了!2012年1月04日 11:03
5个答案 按时间排序 按投票排序
-
mysql的话,8个小时后数据库服务器端的连接会自动断开,
<!-- 在分配连接前后是否进行有效性测试,这个是解决本问题的关键 -->
<test-before-use>true</test-before-use>
<test-after-use>true</test-after-use>
<!-- 用于测试的SQL语句 -->
<house-keeping-test-sql>SELECT CURRENT_USER</house-keeping-test-sql>
http://blog.csdn.net/jsx112/article/details/58925512012年1月04日 11:26
相关推荐
Proxool是Apache软件基金会的一个开源项目,它提供了一个轻量级的数据库连接池实现。Proxool通过创建一个数据库连接池来管理数据库连接,避免了频繁创建和销毁连接带来的开销,提高了系统资源利用率。 2. **安装与...
Proxool是一个开源的、轻量级的Java数据库连接池实现,它提供了一种高效、灵活的方式来管理数据库连接。在某些场景下,为了保护敏感信息,如数据库的用户名和密码,我们需要对这些数据进行加密处理。"proxool连接池...
项目实用的proxool连接池配置文件,每个标签都有注释,可以直接拿来使用
Proxool连接池使用方法 首先, 你要把下载 proxool 的 lib 下面所有的 jar 文件, 放到 WEB-INF/lib 下面, 另外, 把你的 jdbc driver 也放到相同的 lib,
-- 连接池的别名 --> <alias>DBPool</alias> - <!-- proxool只能管理由自己产生的连接 --> <driver-url>jdbc:sqlserver://localhost:1433;dataBaseName=books</driver-url> - <!-- JDBC驱动程序 --> ...
2. `proxool-0.9.1.jar`:这是Proxool的主要库文件,包含了连接池的核心实现和所有必要的类,开发者在项目中引用这个jar文件就可以使用Proxool的功能。 在实际应用中,使用Proxool连接池的步骤通常包括: 1. 添加...
在Java开发中,使用Hibernate作为持久层框架时,为了提高数据库操作的性能和资源利用率,通常会引入连接池技术。Proxool是Apache的一个开源项目,它提供了一个轻量级的数据库连接池实现。本篇将详细介绍如何在...
标题 "Spring+Hibernate+Proxool连接池" 涉及到的是在Java Web开发中,如何使用Spring框架集成Hibernate ORM框架,并结合Proxool作为数据库连接池的技术实践。这通常是为了提高应用性能,有效管理和复用数据库连接,...
4. **关闭连接**:使用完数据库连接后,记得调用`Connection.close()`方法归还连接到连接池。 ### Proxool 和其他连接池的比较: 尽管Proxool具有很多优点,但在现代开发中,更常见的是使用如HikariCP、C3P0、DBCP...
本文将详细介绍Proxool数据库连接池及其监控功能,通过一个实际的实例来展示其工作原理和使用方法。 Proxool是Apache软件基金会的一个开源项目,它提供了一个轻量级、高性能的数据库连接池解决方案。Proxool与其他...
Proxool是Apache软件基金会的一个开源项目,它提供了一个轻量级的数据库连接池实现。在本压缩包中,包含的是与Proxool连接池相关的MySQL驱动jar包,这将有助于在Java应用程序中建立与MySQL数据库的连接。 首先,...
Proxool连接池是数据库连接管理的一个开源工具,它提供了一种高效且灵活的方式来管理和复用数据库连接,以提升应用程序的性能和响应速度。在Java应用程序中,尤其是在高并发环境下,数据库连接池扮演着至关重要的...
Proxool是一个开源的轻量级Java数据库连接池实现,其主要目标是替代常见的数据库连接池解决方案,如C3P0或DBCP,并且提供了更加灵活和易于配置的特性。在实际应用中,合理配置Proxool可以显著提高系统的性能和稳定性...
为了提高效率和避免资源浪费,开发者通常会采用数据库连接池技术,`Proxool`就是其中一种优秀的开源解决方案。 **Proxool简介** `Proxool`是由`Apache Software Foundation`维护的轻量级数据库连接池,它提供了一...
而Proxool是Apache软件基金会的一个开源项目,它提供了一个轻量级、高效的数据库连接池,可以有效地管理和复用数据库连接,减少创建和销毁连接的开销。 要配置Hibernate使用Proxool连接池,我们需要进行以下步骤: ...
总结起来,这个案例涵盖了SSH2安全通信、Java注解简化配置、Proxool连接池优化数据库访问,以及SF4J的日志记录,这些都是Java开发中不可或缺的技术组件。通过学习和理解这个案例,开发者可以提升在构建安全、高效、...
Proxool维护了一个预定义大小的连接池,当应用程序需要一个数据库连接时,它会从池中获取一个已存在的连接,而不是直接创建新的连接。使用完毕后,连接会被返回到池中,供其他线程重复使用。这种机制减少了数据库...
Proxool是一个开源的数据库连接池实现,它提供了动态、可扩展的连接池管理服务。通过Proxool,开发者可以方便地监控和调整连接池参数,以适应不同规模的应用需求。 **2. 配置步骤** **(1)引入依赖** 首先,需要...
在这个"Proxool连接池实例.zip"压缩包中,我们可以推测包含了一些关于如何在C#环境下集成和使用Proxool连接池的示例代码和相关资源。 首先,让我们深入理解一下Proxool连接池的工作原理。Proxool维护了一个数据库...