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

相关推荐

    proxool连接池使用详细说明

    Proxool是Apache软件基金会的一个开源项目,它提供了一个轻量级的数据库连接池实现。Proxool通过创建一个数据库连接池来管理数据库连接,避免了频繁创建和销毁连接带来的开销,提高了系统资源利用率。 2. **安装与...

    proxool连接池用户名密码加密

    Proxool是一个开源的、轻量级的Java数据库连接池实现,它提供了一种高效、灵活的方式来管理数据库连接。在某些场景下,为了保护敏感信息,如数据库的用户名和密码,我们需要对这些数据进行加密处理。"proxool连接池...

    proxool连接池配置文件

    项目实用的proxool连接池配置文件,每个标签都有注释,可以直接拿来使用

    Proxool连接池使用方法

    Proxool连接池使用方法 首先, 你要把下载 proxool 的 lib 下面所有的 jar 文件, 放到 WEB-INF/lib 下面, 另外, 把你的 jdbc driver 也放到相同的 lib,

    proxool连接池配置

    -- 连接池的别名 --&gt; &lt;alias&gt;DBPool&lt;/alias&gt; - &lt;!-- proxool只能管理由自己产生的连接 --&gt; &lt;driver-url&gt;jdbc:sqlserver://localhost:1433;dataBaseName=books&lt;/driver-url&gt; - &lt;!-- JDBC驱动程序 --&gt; ...

    proxool连接池jar包

    2. `proxool-0.9.1.jar`:这是Proxool的主要库文件,包含了连接池的核心实现和所有必要的类,开发者在项目中引用这个jar文件就可以使用Proxool的功能。 在实际应用中,使用Proxool连接池的步骤通常包括: 1. 添加...

    在Hibernate中配置Proxool连接池

    在Java开发中,使用Hibernate作为持久层框架时,为了提高数据库操作的性能和资源利用率,通常会引入连接池技术。Proxool是Apache的一个开源项目,它提供了一个轻量级的数据库连接池实现。本篇将详细介绍如何在...

    Spring+Hibernate+Proxool连接池

    标题 "Spring+Hibernate+Proxool连接池" 涉及到的是在Java Web开发中,如何使用Spring框架集成Hibernate ORM框架,并结合Proxool作为数据库连接池的技术实践。这通常是为了提高应用性能,有效管理和复用数据库连接,...

    proxool连接池

    4. **关闭连接**:使用完数据库连接后,记得调用`Connection.close()`方法归还连接到连接池。 ### Proxool 和其他连接池的比较: 尽管Proxool具有很多优点,但在现代开发中,更常见的是使用如HikariCP、C3P0、DBCP...

    proxool数据库连接池实例(带监控功能)

    本文将详细介绍Proxool数据库连接池及其监控功能,通过一个实际的实例来展示其工作原理和使用方法。 Proxool是Apache软件基金会的一个开源项目,它提供了一个轻量级、高性能的数据库连接池解决方案。Proxool与其他...

    proxool连接池所涉及的jar包文件

    Proxool是Apache软件基金会的一个开源项目,它提供了一个轻量级的数据库连接池实现。在本压缩包中,包含的是与Proxool连接池相关的MySQL驱动jar包,这将有助于在Java应用程序中建立与MySQL数据库的连接。 首先,...

    Proxool连接池jar包

    Proxool连接池是数据库连接管理的一个开源工具,它提供了一种高效且灵活的方式来管理和复用数据库连接,以提升应用程序的性能和响应速度。在Java应用程序中,尤其是在高并发环境下,数据库连接池扮演着至关重要的...

    proxool连接池配置详解

    Proxool是一个开源的轻量级Java数据库连接池实现,其主要目标是替代常见的数据库连接池解决方案,如C3P0或DBCP,并且提供了更加灵活和易于配置的特性。在实际应用中,合理配置Proxool可以显著提高系统的性能和稳定性...

    Jsp使用Proxool连接池

    为了提高效率和避免资源浪费,开发者通常会采用数据库连接池技术,`Proxool`就是其中一种优秀的开源解决方案。 **Proxool简介** `Proxool`是由`Apache Software Foundation`维护的轻量级数据库连接池,它提供了一...

    配置Hibernate使用Proxool连接池

    而Proxool是Apache软件基金会的一个开源项目,它提供了一个轻量级、高效的数据库连接池,可以有效地管理和复用数据库连接,减少创建和销毁连接的开销。 要配置Hibernate使用Proxool连接池,我们需要进行以下步骤: ...

    ssh2简单案例,注解+proxool连接池+sf4j记录日志

    总结起来,这个案例涵盖了SSH2安全通信、Java注解简化配置、Proxool连接池优化数据库访问,以及SF4J的日志记录,这些都是Java开发中不可或缺的技术组件。通过学习和理解这个案例,开发者可以提升在构建安全、高效、...

    Proxool连接池及使用文档

    Proxool维护了一个预定义大小的连接池,当应用程序需要一个数据库连接时,它会从池中获取一个已存在的连接,而不是直接创建新的连接。使用完毕后,连接会被返回到池中,供其他线程重复使用。这种机制减少了数据库...

    Hibernate Proxool连接池配置总结及常遇问题

    Proxool是一个开源的数据库连接池实现,它提供了动态、可扩展的连接池管理服务。通过Proxool,开发者可以方便地监控和调整连接池参数,以适应不同规模的应用需求。 **2. 配置步骤** **(1)引入依赖** 首先,需要...

    Proxool连接池实例.zip

    在这个"Proxool连接池实例.zip"压缩包中,我们可以推测包含了一些关于如何在C#环境下集成和使用Proxool连接池的示例代码和相关资源。 首先,让我们深入理解一下Proxool连接池的工作原理。Proxool维护了一个数据库...

Global site tag (gtag.js) - Google Analytics