0 0

使用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 />&lt;!-- 在分配连接前后是否进行有效性测试,这个是解决本问题的关键 --&gt; <br />&lt;test-before-use&gt;true&lt;/test-before-use&gt; <br />&lt;test-after-use&gt;true&lt;/test-after-use&gt; <br />&lt;!-- 用于测试的SQL语句 --&gt; <br />&lt;house-keeping-test-sql&gt;SELECT CURRENT_USER&lt;/house-keeping-test-sql&gt; <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 />==&gt; ${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 />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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 />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return session; <br />&nbsp;&nbsp;&nbsp; }

问题补充:自己到现在还没解决,今天又出现这个报错了,哪位同行兄弟有解,拿出来分享下嘛。 <br />快受不鸟了!
2012年1月04日 11:03

5个答案 按时间排序 按投票排序

0 0

Caused by: java.lang.NullPointerException

这是是主要的,看看这个怎么产生的

2012年1月04日 13:09
0 0

看错误栈,应该是程序中有问题,转到error.ftl中取${msg[0]}时抛的错,你可以看看日志,是什么问题

2012年1月04日 11:47
0 0

还有映射文件

2012年1月04日 11:35
0 0

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/5892551

2012年1月04日 11:26
0 0

你的错误信息是配置在一张表里面吗?如果是,看下错误信息表的hibernate配置文件吧

2012年1月04日 11:24

相关推荐

Global site tag (gtag.js) - Google Analytics