项目之前运行非常的稳定,没有异常情况
但是项目自从换了服务器之后就出现这样的异常了。1、项目分成两部分,主站和论坛(论坛与主站的数据库是分开的)。
2、主站首页需要显示论坛的内容(所以连接论坛时又新增了一个数据库连接,是用C3PO连接的)。
3、在主站注册会员的时候,同时把会员信息添加到论坛中(下面的异常就是注册会员添加到论坛时抛出的异常)。
疑点:主站首页显示论坛信息的时候没有发生异常,如果是C3PO连接有问题的话,那主站显示论坛信息的也应该发生异常,
但是只有会员注册的时候发生了异常,这是小弟迷惑的地方,希望各位大哥帮帮忙,谢谢!!!!com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source.
at com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1307)
at com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:551)
at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:471)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:525)
at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128)
at com.czsoft.tax.bbs.DBPool.getConnection(DBPool.java:43)
at com.czsoft.tax.bbs.UserDB.insert(UserDB.java:14)
at com.czsoft.tax.web.action.UserAction.add(UserAction.java:309)
at sun.reflect.GeneratedMethodAccessor709.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:269)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
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:128)
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:286)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
at java.lang.Thread.run(Thread.java:619)

解决方案 »

  1.   

    论坛是easyjforum的开源论坛。
    我们是用代码直接easyjforum的数据库,与论坛程序无关.
    连接代码:package com.czsoft.tax.bbs;import java.beans.PropertyVetoException;
    import java.sql.Connection;
    import java.sql.SQLException;import com.mchange.v2.c3p0.ComboPooledDataSource;public class DBPool { private static DBPool dbPool;
    private ComboPooledDataSource dataSource; static{
    dbPool = new DBPool();
    }        public DBPool(){
    try{
    dataSource = new ComboPooledDataSource();
    BbsProperties bbs = new BbsProperties();
    dataSource.setUser(bbs.readValue("connection.username"));       
    dataSource.setPassword(bbs.readValue("connection.password"));       
    dataSource.setJdbcUrl(bbs.readValue("connection.url")); 
    dataSource.setDriverClass(bbs.readValue("connection.driver_class")); 
    dataSource.setInitialPoolSize(2); 
    dataSource.setMinPoolSize(1); 
    dataSource.setMaxPoolSize(10); 
    dataSource.setMaxStatements(50); 
    dataSource.setMaxIdleTime(60);       
    }catch(PropertyVetoException e){
    System.out.println("DBPool init ------> exception");
    throw new RuntimeException(e);       
    }       
    }        public final static DBPool getInstance(){       
    return dbPool;
    }        public final Connection getConnection(){       
    try {
    return dataSource.getConnection();       
    } catch (SQLException e) {
    System.out.println("DBPool ----> getConnection() exception");
    throw new RuntimeException("Connection is error!",e);       
    }
    }}
      

  2.   

    public? 想用单态还不如改成private呢。我怀疑是主键的问题。
      

  3.   

    有可能是数据库问题。
    因为项目在以前的服务器上跑一点问题都没有,自从换了服务器和数据库后就出现问题了,代码应该没问题,Tomcat的版本与以前的版本一样,剩下就数据库不一样了!有谁知道具体是数据库哪里原因吗?因为我还得找服务器那边的人,就好能一次性弄好!麻烦大家了!
      

  4.   

    com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source. at com.czsoft.tax.bbs.DBPool.getConnection(DBPool.java:43) 明显是数据库连接问题~~~
    把ComboPooledDataSource这个类的代码贴出来看看 
      

  5.   

    at com.czsoft.tax.bbs.DBPool.getConnection(DBPool.java:43) 
    获取连接的时候没资源还是什么? 确认代码connection都关闭增加连接数试下。 确认URL都正确?
              dataSource = new ComboPooledDataSource();
                BbsProperties bbs = new BbsProperties();
                dataSource.setUser(bbs.readValue("connection.username"));       
                dataSource.setPassword(bbs.readValue("connection.password"));       
                dataSource.setJdbcUrl(bbs.readValue("connection.url")); 
                dataSource.setDriverClass(bbs.readValue("connection.driver_class")); 
                dataSource.setInitialPoolSize(2); 
                dataSource.setMinPoolSize(1); 
                dataSource.setMaxPoolSize(10); 
                dataSource.setMaxStatements(50); 
                dataSource.setMaxIdleTime(60);真不行改下DBPool, 直接DBpool.getConnection都每次开一个连接,直接使用JDBC调试下
      

  6.   

    配置文件!!!
    这是资源文件的内容:就是 代码里 bbs.readValue("connection.username")读取的内容。
    connection.url=jdbc:mysql://x01.jspwebhost.cn:3306/xa00074?useUnicode=true&characterEncoding=EUC_CN
    connection.username=aaaaaaa
    connection.password=xxxxxxx
    connection.driver_class=com.mysql.jdbc.Driver
    bbsmessage.display=yes这是hibernate的配置文件
    <?xml version='1.0' encoding='UTF-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
              "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
              "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools.                   -->
    <hibernate-configuration> <session-factory>

    <property name="hibernate.connection.provider_class">
    org.hibernate.connection.C3P0ConnectionProvider
    </property>
    <property name="c3p0.min_size">5</property>
    <property name="c3p0.max_size">300</property>
    <property name="c3p0.time_out">1800</property>
    <property name="c3p0.max_statement">50</property>
    <property name="c3p0.acquire_increment">1</property>
    <property name="c3p0.idle_test_period">120</property>
    <property name="c3p0.validate">true</property>

    <property name="dialect">
    org.hibernate.dialect.MySQLDialect
    </property>
    <property name="connection.url">
    jdbc:mysql://192.168.1.13:3306/tax
    </property>
    <property name="connection.username">root</property>
    <property name="connection.password">1234</property>
    <property name="connection.driver_class">
    com.mysql.jdbc.Driver
    </property>

    <property name="myeclipse.connection.profile">zhuji</property>
    <property name="connection.characterEncoding">utf8</property>
    <property name="connection.useUnicode">false</property>
    <property name="show_sql">false</property> <mapping
    resource="com/czsoft/tax/domain/entity/QuestionT.hbm.xml" />
    <mapping
    resource="com/czsoft/tax/domain/entity/LawCateT.hbm.xml" />
    <mapping resource="com/czsoft/tax/domain/entity/LinkT.hbm.xml" />
    <mapping resource="com/czsoft/tax/domain/entity/LogT.hbm.xml" />
    <mapping
    resource="com/czsoft/tax/domain/entity/QaCateT.hbm.xml" />
    <mapping resource="com/czsoft/tax/domain/entity/UserT.hbm.xml" />
    <mapping resource="com/czsoft/tax/domain/entity/LawT.hbm.xml" />
    <mapping resource="com/czsoft/tax/domain/entity/InfoT.hbm.xml" />
    <mapping
    resource="com/czsoft/tax/domain/entity/AnswerT.hbm.xml" />
    <mapping resource="com/czsoft/tax/domain/entity/MainT.hbm.xml" />
    <mapping resource="com/czsoft/tax/domain/entity/AdminT.hbm.xml" />
    <mapping
    resource="com/czsoft/tax/domain/entity/InfoCateT.hbm.xml" /> </session-factory></hibernate-configuration>
      

  7.   

    <property name="show_sql">true</property>
    看看插入sql语句怎样的
      

  8.   

    A ResourcePool could not acquire a resource from its primary factory or source. 
    这应该是数据库连接有问题
      

  9.   

    回答#16 问题SQL文决定没有问题,因为之前在以前的服务器里可以正常连接Mysql,现在用的Mysql版本与以前的版本一样!!!!
    如果是连接问题的话那主站的首页读取论坛信息这么没有问题,用的都是这样类的链接!
      

  10.   


    哎, 临时没时间就直接把下面的改成
    DriverManager.getConnection()用着先了。===============================================================public final Connection getConnection(){       
            try {
                return dataSource.getConnection();       
            } catch (SQLException e) {
                System.out.println("DBPool ----> getConnection() exception");
                throw new RuntimeException("Connection is error!",e);       
            }
        }
      

  11.   

    刚才google了一把,好像都说是c3p0连接池的问题。
    这个帖子是英文的,我没本事翻译过来。希望楼主有那个能力。期待问题的解决方案。
    记得贴上来。
    http://lists.jboss.org/pipermail/hibernate-issues/2006-November/002418.html
      

  12.   

    是否尝试不使用c3po连接池而直接使用hibernate的datasorce?得先确定到底是什么部分造成的问题,使用21楼的方式可以先获得连接暂时把问题表面解决下。
      

  13.   

    http://opensource.atlassian.com/projects/hibernate/browse/HHH-2032上面地址通过goole翻译。
    http://translate.google.cn/translate?hl=zh-CN&sl=en&u=http://opensource.atlassian.com/projects/hibernate/browse/HHH-2032&ei=d6cLS-vcH43Y7APrwMGBAw&sa=X&oi=translate&ct=result&resnum=2&ved=0CAsQ7gEwATgK&prev=/search%3Fq%3Dcom.mchange.v2.resourcepool.CannotAcquireResourceException:%2BA%2BResourcePool%2Bcould%2Bnot%2Bacquire%2Ba%2Bresource%2Bfrom%2Bits%2Bprimary%2Bfactory%2Bor%2Bsource.%26hl%3Dzh-CN%26sa%3DN%26start%3D10%26newwindow%3D1
    ----------------------------三个解决办法?---------------
    14:43:58,253 WARN BasicResourcePool:1222 - com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@edf4c8 – Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30).There are three workarounds to the problem:1。 Revert back to Hibernate 3.2.0.cr3 (not really an option)恢复到休眠3.2.0.cr3(不是一个真正的选项)
    2. 2。 Increase the 'max connections' setting for the database加大对数据库中的'最大的连接设置
    3. 3。 Disable c3p0 by removing it from hibernate.cfg.xml禁用C3P0的通过从它的hibernate.cfg.xml
      

  14.   

    和你用的是一样的C3PO连接池,不过偶们是委托给SPRING管理的
      

  15.   

    网上查找了n久,都没解决。只是提到url不正确。于是想到以前IIS出现过只识别ip不识别locahost的bug 所以试用127.0.0.1,结果运行没有报错。success! 至于为什么还有待去研究---------->我在网上看到的,顶,希望解决了,公布什么原因。
      

  16.   

    com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source. 看了你这段感觉是数据库权限问题,是不是只有读的权限没有写的权限,你给你的论坛数据增加权限看看!
      

  17.   

    first,cool down.
    数据库移服务器可能发生索引失效或丢失的问题
    调试一下,找出哪个表的索引失效
    将其重建
    Good Luck
      

  18.   

    first,cool down. 
    数据库移服务器可能发生索引失效或丢失的问题 
    调试一下,找出哪个表的索引失效 
    将其重建 
    Good Luck