急求帮忙:SSH 使用 proxool 连接池的 报错问题。谢谢了。

问题报错的log是:
[14:51:11.774] javax.servlet.ServletException: org.springframework.orm.hibernate3.HibernateSystemException: connnection proxy not usable after transaction completion; nested exception is org.hibernate.HibernateException: connnection proxy not usable after transaction completion
[14:51:11.774] at org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
[14:51:11.774] at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
[14:51:11.774] at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
[14:51:11.774] at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
[14:51:11.774] at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
[14:51:11.774] at javax.servlet.http.HttpServlet.service(HttpServlet.java:115)
[14:51:11.774] at javax.servlet.http.HttpServlet.service(HttpServlet.java:92)
[14:51:11.774] at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:106)
[14:51:11.774] at com.caucho.server.webapp.DispatchFilterChain.doFilter(DispatchFilterChain.java:115)
[14:51:11.774] at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:229)
[14:51:11.774] at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:277)
[14:51:11.774] at com.caucho.server.webapp.RequestDispatcherImpl.forward(RequestDispatcherImpl.java:106)
[14:51:11.774] at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1085)
[14:51:11.774] at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:398)
[14:51:11.774] at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:241)
[14:51:11.774] at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
[14:51:11.774] at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
[14:51:11.774] at javax.servlet.http.HttpServlet.service(HttpServlet.java:115)
[14:51:11.774] at javax.servlet.http.HttpServlet.service(HttpServlet.java:92)
[14:51:11.774] at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:106)
[14:51:11.774] at net.iptv.server.sgActivity.util.encoding.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:117)
[14:51:11.774] at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70)
[14:51:11.774] at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:173)
[14:51:11.774] at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:229)
[14:51:11.774] at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:274)
[14:51:11.774] at com.caucho.server.port.TcpConnection.run(TcpConnection.java:514)
[14:51:11.774] at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:520)
[14:51:11.774] at com.caucho.util.ThreadPool.run(ThreadPool.java:442)
[14:51:11.774] at java.lang.Thread.run(Thread.java:595)
[14:51:11.774] Caused by: org.springframework.orm.hibernate3.HibernateSystemException: connnection proxy not usable after transaction completion; nested exception is org.hibernate.HibernateException: connnection proxy not usable after transaction completion
[14:51:11.774] at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:661)
[14:51:11.774] at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
[14:51:11.774] at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:424)
[14:51:11.774] at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:339)

spring 配置:
class="org.springframework.jdbc.datasource.DriverManagerDataSource">

org.logicalcobwebs.proxool.ProxoolDriver


proxool.db

Proxool.xml配置文件:
<?xml version="1.0" encoding="UTF-8"?>


db
jdbc:jtds:sqlserver://120.165.19.16:1433/activity
net.sourceforge.jtds.jdbc.Driver




90000
20
3
20
30

hibernate.cfg.xml 配置:

<session-factory>

    <!-- proxool连接池加载的类-->
    <property name="hibernate.connection.provider_class">
        org.hibernate.connection.ProxoolConnectionProvider
    </property>

    <!--连接池的别名,即配置连接池时起的别名-->
    <property name="hibernate.proxool.pool_alias">db</property>

    <!--连接池文件的地址-->
    <property name="hibernate.proxool.xml">
        WEB-INF/proxool.xml
    </property>
    <!--是否将运行期生成的SQL输出到日志以供调试-->
    <property name="show_sql">true</property>   
            <!--指定连接的语言-->
    <property name="dialect">
        org.hibernate.dialect.SQLServerDialect 
    </property>
    <property name="hibernate.proxool.existing_pool">true</property>   
</session-factory>

[quote]您的意思是:我调用了一次数据库,同时里面还有一个地方在调用来处理?我再找找位置。 [/quote]
我的意思是 比如你执行一个方法,里面有个事务,然后这个事务里面还嵌套了一个事务。就是多重事务这样的。

你是启动 还是访问struts action报错啊。

看看这个有没有帮助:

对于JDBC使用了错误的事务管理

Hibernate的事务管理为org.springframework.orm.hibernate3.HibernateTransactionManager

JDBC的为org.springframework.jdbc.datasource.DataSourceTransactionManager

你的配置文件里有事务管理的配置么?
[quote]
对于JDBC使用了错误的事务管理

Hibernate的事务管理为org.springframework.orm.hibernate3.HibernateTransactionManager

JDBC的为org.springframework.jdbc.datasource.DataSourceTransactionManager
[/quote]

感觉是你的事务问题,一般是跑哪个功能引起的,你看一下那个功能的事务是否有嵌套或者事务太长。

[quote]那我这个配置是没问题的,对吗? 事务的话我一般就是调用一次就关闭了。应该不会出现这样的。我是调用数据库的存储过来来执行的。[/quote]
我就担心是事务嵌套了。事务方法里面有另外一个事务在运行。

[quote]您的意思是:我调用了一次数据库,同时里面还有一个地方在调用来处理?我再找找位置。 [/quote]
事务嵌套 应该是指:
[code="java"]
conn1.beginTransaction();
....

conn1.beginTransaction();
...
conn1.endTransaction();

..
conn1.endTransaction();
[/code]