[英]Connection closes using JNDI in Tomcat
我正在使用Spring 5在Tomcat 9和JDK 1.8下運行,我正在嘗試配置JNDI連接以獲取數據源。
如果我通過XML配置Spring,則會得到我的DataSource,一切似乎都可以正常工作。 我以這種方式在applicationContext.xml中配置了數據源:
<jee: jndi-lookup id = "dataSource" jndi-name = "jdbc / yages"
resource-ref = "true" />
當我使用AbstractAnnotationConfigDispatcherServletInitializer類初始化Spring時,將創建我的數據源,但是當我嘗試捕獲連接時會出現以下錯誤:
java.sql.SQLException:數據源在org.apache.tomcat.dbcp.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:2049)處關閉
我嘗試使用以下功能創建數據源:
@Bean (name = "dataSource")
public DataSource dataSource (Environment env) throws NamingException
{
DataSource datasource = null;
try {
JndiDataSourceLookup lookup = new JndiDataSourceLookup ();
datasource = lookup.getDataSource ("jdbc/yages");
datasource.getConnection ();
return datasource;
} catch (SQLException ex) {
ex.printStackTrace ();
}
return datasource;
}
似乎已正確創建了數據源,但與數據庫的連接似乎已關閉。 但是,如果我使用DataSource,並通過XML對其進行配置,那么它對我來說效果很好,這就是為什么我認為對數據庫的連接和Tomcat的配置都不是問題。
知道為什么關閉連接嗎?
謝謝。
我找到了解決方案。 用這個指令創建Bean
@Bean(name = "dataSource", destroyMethod = "")
問題是Spring取消部署,銷毀Bean並關閉連接。 為了避免這種情況,我必須更改Spring的默認行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.