上代码 
public class DBUtil {
private static SessionFactory factory;
    public static Session getSession(){
Configuration config = new Configuration().configure();
factory = config.buildSessionFactory();
Session session = factory.openSession();
return session;       
}
    public static void closeSession(Session session){
     if(session!=null){
     session.close();
     }
    }
}
//其中一个dao,所有的都有DBUtil.closeSession(session);
public boolean addImg(Img img){
Session session = DBUtil.getSession();
Transaction t = session.beginTransaction();
boolean falg = false;
try{
if(img!=null){
falg= true;
session.save(img);
}
t.commit();
}catch(Exception e){
t.rollback();
}finally{
DBUtil.closeSession(session);
}
return falg;
}
//
<hibernate-configuration>
    <session-factory> 
     <property name="hibernate.connection.driver_class">com.microsoft.jdbc.sqlserver.SQLServerDriver</property>
     <property name="hibernate.connection.url">jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=skynet</property>
     <property name="hibernate.connection.username">sb</property>
     <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
     <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
     <property name="c3p0.max_size">30000</property>   
    <property name="c3p0.min_size">10</property>   
    <property name="c3p0.timeout">5000</property>    
    <property name="c3p0.idle_test_period">60</property>   
    <property name="c3p0.acquire_increment">1</property> 
    <property name="c3p0.max_statements">0</property>     
     <mapping resource="com/xml/repair.hbm.xml"/>
     <mapping resource="com/xml/users.hbm.xml"/>
     <mapping resource="com/xml/message.hbm.xml"/>
     <mapping resource="com/xml/monitoring.hbm.xml"/>
     <mapping resource="com/xml/img.hbm.xml"/>
     <mapping resource="com/xml/monitoryPoint.hbm.xml"/>
    </session-factory>
</hibernate-configuration>
<property name="c3p0.max_statements">0</property> 这个参数不为0时就无法获取个别的集合
导的是c3p0-0.9.1.2.jar包
哪里有问题,知道的指点一下

解决方案 »

  1.   

    static 有重入问题?
    死掉的日志拿出来展示一下呗
      

  2.   

    2012-01-04 14:05:25 986  INFO org.hibernate.connection.C3P0ConnectionProvider:85 - autocommit mode: false
    2012-01-04 14:05:25 987  INFO org.hibernate.connection.C3P0ConnectionProvider:81 - C3P0 using driver: com.microsoft.jdbc.sqlserver.SQLServerDriver at URL: jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=skynet
    2012-01-04 14:05:25 988  INFO org.hibernate.connection.C3P0ConnectionProvider:82 - Connection properties: {user=sb}
    2012-01-04 14:05:25 989  INFO org.hibernate.connection.C3P0ConnectionProvider:85 - autocommit mode: false
    2012-01-04 14:05:26 073  INFO com.mchange.v2.log.MLog:80 - MLog clients using log4j logging.
    2012-01-04 14:05:26 602  INFO com.mchange.v2.c3p0.C3P0Registry:204 - Initializing c3p0-0.9.1.2 [built 21-May-2007 15:04:56; debug? true; trace: 10]
    2012-01-04 14:05:27 070  INFO com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource:462 - Initializing c3p0 pool... com.mchange.v2.c3p0.PoolBackedDataSource@fe51b5b3 [ connectionPoolDataSource -> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@a7c8ac8 [ acquireIncrement -> 1, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, debugUnreturnedConnectionStackTraces -> false, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 2zcsve8k1afc0njiyeyh4|11241f5, idleConnectionTestPeriod -> 60, initialPoolSize -> 10, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 5000, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 30000, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 10, nestedDataSource -> com.mchange.v2.c3p0.DriverManagerDataSource@e8bb92b8 [ description -> null, driverClass -> null, factoryClassLocation -> null, identityToken -> 2zcsve8k1afc0njiyeyh4|da21bf, jdbcUrl -> jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=skynet, properties -> {user=******} ], preferredTestQuery -> null, propertyCycle -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, usesTraditionalReflectiveProxies -> false; userOverrides: {} ], dataSourceName -> null, factoryClassLocation -> null, identityToken -> 2zcsve8k1afc0njiyeyh4|18657ce, numHelperThreads -> 3 ]
    2012-01-04 14:05:27 070  INFO com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource:462 - Initializing c3p0 pool... com.mchange.v2.c3p0.PoolBackedDataSource@eead709a [ connectionPoolDataSource -> com.mchange.v2.c3p0.WrapperConnectionPoolDataSource@a7c8ac8 [ acquireIncrement -> 1, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, debugUnreturnedConnectionStackTraces -> false, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 2zcsve8k1afc0njiyeyh4|11241f5, idleConnectionTestPeriod -> 60, initialPoolSize -> 10, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 5000, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 30000, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 10, nestedDataSource -> com.mchange.v2.c3p0.DriverManagerDataSource@b319f1fe [ description -> null, driverClass -> null, factoryClassLocation -> null, identityToken -> 2zcsve8k1afc0njiyeyh4|1d7b6d4, jdbcUrl -> jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=skynet, properties -> {user=******} ], preferredTestQuery -> null, propertyCycle -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, usesTraditionalReflectiveProxies -> false; userOverrides: {} ], dataSourceName -> null, factoryClassLocation -> null, identityToken -> 2zcsve8k1afc0njiyeyh4|b32609, numHelperThreads -> 3 ]
    2012-01-04 14:05:27 485  WARN com.mchange.v2.c3p0.impl.NewPooledConnection:139 - com.microsoft.jdbc.sqlserver.SQLServerConnection@9fe17d threw an Error when we tried to check its default holdability. This is probably due to a bug in your JDBC driver that c3p0 can harmlessly work around (reported for some DB2 drivers). Please verify that the error stack trace is consistentwith the getHoldability() method not being properly implemented, and is not due to some deeper problem. This message will not be repeated for Connections of type com.microsoft.jdbc.sqlserver.SQLServerConnection that provoke errors of type java.lang.AbstractMethodError when getHoldability() is called.
    java.lang.AbstractMethodError: com.microsoft.jdbc.sqlserver.SQLServerConnection.getHoldability()I
    at com.mchange.v2.c3p0.impl.NewPooledConnection.carefulCheckHoldability(NewPooledConnection.java:117)
    at com.mchange.v2.c3p0.impl.NewPooledConnection.<init>(NewPooledConnection.java:109)
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:198)
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
    at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
    at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
    2012-01-04 14:05:27 529  INFO com.mchange.v2.c3p0.SQLWarnings:43 - [Microsoft][SQLServer 2000 Driver for JDBC]Database changed to skynet
    java.sql.SQLWarning: [Microsoft][SQLServer 2000 Driver for JDBC]Database changed to skynet
    at com.microsoft.jdbc.base.BaseWarnings.createSQLWarning(Unknown Source)
    at com.microsoft.jdbc.base.BaseWarnings.get(Unknown Source)
    at com.microsoft.jdbc.base.BaseConnection.getWarnings(Unknown Source)
    at com.mchange.v2.c3p0.impl.NewProxyConnection.getWarnings(NewProxyConnection.java:907)
    at com.mchange.v2.c3p0.SQLWarnings.logAndClearWarnings(SQLWarnings.java:42)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:187)
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
    at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
    at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
    2012-01-04 14:05:27 530  INFO com.mchange.v2.c3p0.SQLWarnings:43 - [Microsoft][SQLServer 2000 Driver for JDBC]Database changed to skynet
    java.sql.SQLWarning: [Microsoft][SQLServer 2000 Driver for JDBC]Database changed to skynet
    at com.microsoft.jdbc.base.BaseWarnings.createSQLWarning(Unknown Source)
    at com.microsoft.jdbc.base.BaseWarnings.get(Unknown Source)
    at com.microsoft.jdbc.base.BaseConnection.getWarnings(Unknown Source)
    at com.mchange.v2.c3p0.impl.NewProxyConnection.getWarnings(NewProxyConnection.java:907)
    at com.mchange.v2.c3p0.SQLWarnings.logAndClearWarnings(SQLWarnings.java:42)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:187)
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
    at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
    at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
    2012-01-04 14:05:27 533  INFO com.mchange.v2.c3p0.SQLWarnings:43 - [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]已将数据库上下文改为 'skynet'。
    java.sql.SQLWarning: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]已将数据库上下文改为 'skynet'。
      

  3.   

    2012-01-04 14:05:45 249  INFO com.mchange.v2.c3p0.SQLWarnings:43 - [Microsoft][SQLServer 2000 Driver for JDBC]Language changed to 繁體中文
    java.sql.SQLWarning: [Microsoft][SQLServer 2000 Driver for JDBC]Language changed to 繁體中文
    at com.microsoft.jdbc.base.BaseWarnings.createSQLWarning(Unknown Source)
    at com.microsoft.jdbc.base.BaseWarnings.createSQLWarning(Unknown Source)
    at com.microsoft.jdbc.base.BaseWarnings.createSQLWarning(Unknown Source)
    at com.microsoft.jdbc.base.BaseWarnings.get(Unknown Source)
    at com.microsoft.jdbc.base.BaseConnection.getWarnings(Unknown Source)
    at com.mchange.v2.c3p0.impl.NewProxyConnection.getWarnings(NewProxyConnection.java:907)
    at com.mchange.v2.c3p0.SQLWarnings.logAndClearWarnings(SQLWarnings.java:42)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:187)
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
    at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
    at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
      

  4.   

    表示跟楼主遇到一样的问题,我刷新5次就死翘翘了,说too many connection