簡體   English   中英

在Tomcat中使用JNDI關閉連接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM