Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot get a connection, pool error Timeout waiting for idle object
at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:104)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:82)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
... 128 more
Caused by: java.util.NoSuchElementException: Timeout waiting for idle object
at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:958)
at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:96)
... 131 more
我用的是SSH
Spring配置文件如下:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- 依赖注入数据源,注入正是上面定义的dataSource -->
<property name="dataSource" ref="dataSource" />
<!-- 定义Hibernate的SessionFactory的属性 -->
<property name="hibernateProperties">
<props>
<!-- 指定数据库方言 org.hibernate.dialect.MySQLDialect -->
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
<!-- 允许hibernate自动提交 -->
<prop key="hibernate.connection.autocommit">true</prop>
<!-- 显示Hibernate持久化操作所生成的SQL -->
<prop key="hibernate.show_sql">true</prop>
<!-- 是否根据需要每次自动创建数据库 update -->
<prop key="hibernate.hbm2ddl.auto">update</prop>
<!-- 将SQL脚本进行格式化后再输出 -->
<prop key="hibernate.format_sql">true</prop>
</props>
<!-- mappingResouces属性用来列出全部映射文件 -->
</property>
<property name="mappingResources">
<list>
<!-- 以下用来列出Hibernate映射文件 -->
<value>com/ucans/home/config/mapping/TBookInfo.hbm.xml</value>
<value>com/ucans/home/config/mapping/TBookOriginalInfo.hbm.xml</value>
<value>com/ucans/home/config/mapping/TcBookBigType.hbm.xml</value>
<value>com/ucans/home/config/mapping/TcBookSmallType.hbm.xml</value>
<value>com/ucans/home/config/mapping/TBoughtBookInfo.hbm.xml</value>
<value>com/ucans/home/config/mapping/TBookStatisticsInfo.hbm.xml</value>
<value>com/ucans/login/config/mapping/TReaderSelfinfo.hbm.xml</value>
<value>com/ucans/shoppingCard/config/mapping/TShoppingCartInfo.hbm.xml</value>
<value>com/ucans/detail/config/mapping/TReviewInfo.hbm.xml</value>
</list>
</property>
</bean>
<!-- 定义数据源Bean,使用apache dbcp数据源实现 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<!-- 指定连接数据库的驱动 com.mysql.jdbc.Driver -->
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<!-- 指定连接数据库的URL jdbc:mysql://localhost:3306/ebook?useUnicode=true&characterEncoding=UTF-8 -->
<property name="url" value="jdbc:oracle:thin:@12.13.14.15:1521:aaa" />
<!-- 指定连接数据库的用户名 -->
<property name="username" value="aaaa" />
<!-- 指定连接数据库的用户密码 -->
<property name="password" value="aaaaa" />
<!-- 指定连接数据库连接池的最大激活连接数 -->
<property name="maxActive" value="100" />
<!-- 指定连接数据库连接池的连接的最大空闲时间 -->
<property name="maxIdle" value="30" />
<!-- 指定连接数据库连接池的连接的最大等待秒钟数 -->
<property name="maxWait" value="500" />
<!-- 打开自动提交模式 -->
<property name="defaultAutoCommit" value="true"></property>
</bean>请大家帮我看看是这段配置有问题吗?请指点一二。谢谢了。
at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:104)
at org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:82)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
... 128 more
Caused by: java.util.NoSuchElementException: Timeout waiting for idle object
at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:958)
at org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.java:96)
... 131 more
我用的是SSH
Spring配置文件如下:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- 依赖注入数据源,注入正是上面定义的dataSource -->
<property name="dataSource" ref="dataSource" />
<!-- 定义Hibernate的SessionFactory的属性 -->
<property name="hibernateProperties">
<props>
<!-- 指定数据库方言 org.hibernate.dialect.MySQLDialect -->
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
<!-- 允许hibernate自动提交 -->
<prop key="hibernate.connection.autocommit">true</prop>
<!-- 显示Hibernate持久化操作所生成的SQL -->
<prop key="hibernate.show_sql">true</prop>
<!-- 是否根据需要每次自动创建数据库 update -->
<prop key="hibernate.hbm2ddl.auto">update</prop>
<!-- 将SQL脚本进行格式化后再输出 -->
<prop key="hibernate.format_sql">true</prop>
</props>
<!-- mappingResouces属性用来列出全部映射文件 -->
</property>
<property name="mappingResources">
<list>
<!-- 以下用来列出Hibernate映射文件 -->
<value>com/ucans/home/config/mapping/TBookInfo.hbm.xml</value>
<value>com/ucans/home/config/mapping/TBookOriginalInfo.hbm.xml</value>
<value>com/ucans/home/config/mapping/TcBookBigType.hbm.xml</value>
<value>com/ucans/home/config/mapping/TcBookSmallType.hbm.xml</value>
<value>com/ucans/home/config/mapping/TBoughtBookInfo.hbm.xml</value>
<value>com/ucans/home/config/mapping/TBookStatisticsInfo.hbm.xml</value>
<value>com/ucans/login/config/mapping/TReaderSelfinfo.hbm.xml</value>
<value>com/ucans/shoppingCard/config/mapping/TShoppingCartInfo.hbm.xml</value>
<value>com/ucans/detail/config/mapping/TReviewInfo.hbm.xml</value>
</list>
</property>
</bean>
<!-- 定义数据源Bean,使用apache dbcp数据源实现 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<!-- 指定连接数据库的驱动 com.mysql.jdbc.Driver -->
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<!-- 指定连接数据库的URL jdbc:mysql://localhost:3306/ebook?useUnicode=true&characterEncoding=UTF-8 -->
<property name="url" value="jdbc:oracle:thin:@12.13.14.15:1521:aaa" />
<!-- 指定连接数据库的用户名 -->
<property name="username" value="aaaa" />
<!-- 指定连接数据库的用户密码 -->
<property name="password" value="aaaaa" />
<!-- 指定连接数据库连接池的最大激活连接数 -->
<property name="maxActive" value="100" />
<!-- 指定连接数据库连接池的连接的最大空闲时间 -->
<property name="maxIdle" value="30" />
<!-- 指定连接数据库连接池的连接的最大等待秒钟数 -->
<property name="maxWait" value="500" />
<!-- 打开自动提交模式 -->
<property name="defaultAutoCommit" value="true"></property>
</bean>请大家帮我看看是这段配置有问题吗?请指点一二。谢谢了。
配置好像没什么问题;刚刚帮LZ Google了一下说的是
pool error Timeout waiting for idle object
意思是数据库连接池泄露Lz 可以设置一下max-active及max-idle为较小的值(如10,5),这样可以及早发现问题解决问题。
public static Connection getConn(){
Connection conn = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@localhost:1521:orcl";
String user="System";
String password="aaaaaa";
conn= DriverManager.getConnection(url,user,password);
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
public static void main(String[] args) {
System.out.println(getConn());
}
}
改了 测试下!! 看 能连不
Cannot get a connection, pool error Timeout waiting for idle object