【发布时间】:2015-08-12 21:08:36
【问题描述】:
我在我们的 context.xml 文件中添加了以下属性,在 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 才能成功建立与数据库的连接?在典型的生产环境中,如果 DB 因任何原因关闭并被恢复,应用服务器是否也需要重新启动。我认为,这不是必需的。
我是否错过了 Context.xml 中启用此功能的任何其他属性?
谢谢
【问题讨论】:
-
嗨库马尔,我也有同样的问题。你解决了吗?
标签: jdbc tomcat7 connection-pooling