Tomcat 7中的JDBC连接池配置

时间:2015-05-29 21:06:28

标签: jdbc tomcat7 connection-pooling

我在contextcat文件中的tomcat 7x

下添加了以下属性
validationQuery="SELECT 1 FROM DUAL"
testOnBorrow="true"
logValidationErrors="true"
driverClassName="oracle.jdbc.driver.OracleDriver" 
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" 
logAbandoned="true" 
maxActive="50" 
maxIdle="20" 
removeAbandoned="true" 
removeAbandonedTimeout="180"
type="javax.sql.DataSource" 

我关闭了我的Oracle数据库,并试图通过应用程序连接数据库,我得到例外

### Error updating database.  Cause:       org.springframework.jdbc.CannotGetJdbcConnectionException:Could not get JDBC Connection; nested exception is java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

我认为这是预期的错误。

之后,我带回了Oracle并尝试通过应用程序连接数据库,而没有重新启动tomcat。我的期望是,应用程序应该能够从池中获取连接并正常工作。但是,我看到了

### Cause: java.sql.SQLRecoverableException: Closed Connection
; SQL []; Closed Connection; nested exception is  java.sql.SQLRecoverableException: Closed Connection

是否存在SQLRecoverableException,这是预期的。我是否需要重启tomcat,建立成功连接回数据库?在典型的生产环境中,如果数据库由于任何原因而被关闭并被带回,那么是否还需要重新启动应用程序服务器。我认为,这不是必需的。

我是否遗漏了Context.xml中启用此功能的任何其他属性?

由于

1 个答案:

答案 0 :(得分:1)

您需要指定一个url属性,允许连接连接到DB