-
使用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连接池使用详细说明,proxool连接池使用详细说明,proxool连接池使用详细说明。
proxool连接池配置详解 proxool连接池配置详解 proxool连接池配置详解 proxool连接池配置详解 proxool连接池配置详解 proxool连接池配置详解
项目实用的proxool连接池配置文件,每个标签都有注释,可以直接拿来使用
-- 连接池的别名 --> <alias>DBPool</alias> - <!-- proxool只能管理由自己产生的连接 --> <driver-url>jdbc:sqlserver://localhost:1433;dataBaseName=books</driver-url> - <!-- JDBC驱动程序 --> ...
proxool 数据库连接池用户名、密码加密处理,文件里面包含可直接使用加密的jar以及相关使用说明。
在Hibernate中配置Proxool连接池
Proxool连接池jar包Proxool连接池jar包Proxool连接池jar包
proxool 连接池 tomcat模拟连接池
Proxool连接池及使用文档,参照文档,可以很快学会使用
ssh2注册登录案例,注解+proxool连接池+sf4j记录日志
最新,最全的proxool连接池所涉及的mysql的jar包程序
Proxool是一种Java数据库连接池技术。是sourceforge下的一个开源项目,这个项目提供一个健壮、易用的连接池,最为关键的是这个连接池提供监控的功能,方便易用,便于发现连接泄漏的情况。
基于ssh的proxool连接池配置,希望可以帮助到想了解proxool连接池配置的朋友
博文链接:https://log-cd.iteye.com/blog/199482
Proxool连接池使用方法 首先, 你要把下载 proxool 的 lib 下面所有的 jar 文件, 放到 WEB-INF/lib 下面, 另外, 把你的 jdbc driver 也放到相同的 lib,
Proxool连接池配置
Spring2.5配置proxool连接池
Hibernate Proxool连接池配置总结及常遇问题
连接池配置文件 博文链接:https://yanghaiskys.iteye.com/blog/215424