2017-07-11 64 views
0

我正在使用spring jdbc。如何獲取Oracle數據庫的當前Connection對象?我正在使用JBOSS WIldfly服務器連接池。我通過使用下面的代碼獲取連接URL在我的DaoImp中。我如何在spring中獲取當前連接url JDBC

Connection con; 
      try { 
       con = getJdbcTemplate().getDataSource().getConnection(); 
       dataSource.getConnection().getMetaData().getURL(); 
       connectionUrl = con.getMetaData().getURL(); 
      } catch (SQLException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

如果我寫在setJdbcTemplate方法相同的代碼然後我沒有得到過錯誤那兒,那兒的連接如下

配置阻塞的超時時間內沒有可用的管理的連接(0 [毫秒] ) 我setJdbcTemplate方法follwos

public void setDataSource(DataSource dataSource){ 
     this.dataSource = dataSource; 
     setJdbcTemplate(new JdbcTemplate(this.dataSource)); 
     setNamedParamdbcTemplate(new NamedParameterJdbcTemplate(this.dataSource)); 
     if(connectionUrl==null){ 
     Connection con; 
      try { 
       con = getJdbcTemplate().getDataSource().getConnection(); 
       connectionUrl = con.getMetaData().getURL(); 
      } catch (SQLException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

     } 
    } 

回答

0

您可以指定最大和最小連接池大小在-ds.xml文件中。

<!--pooling parameters--> 
<min-pool-size>5</min-pool-size> 
<max-pool-size>100</max-pool-size> 
<blocking-timeout-millis>5000</blocking-timeout-millis> 
+0

https://meta.stackoverflow.com/q/352023/4751173 – Glorfindel

0

嘗試增加ds.xml文件中的阻塞超時。見configure data source in JBOSS

阻斷超時-米利斯:該元素指定 毫秒,當投擲 異常之前等待連接到塊的最大時間。請注意,這僅在等待連接許可 時纔會阻止,如果創建新的連接需要非常長的時間,則永遠不會拋出異常。默認值爲5000

Default values

- 的時間長度等待 連接變得可用時所有的連接檢查 出(默認5000 == 5秒,從3.2 .4 30000 == 30秒)

<blocking-timeout-millis>5000</blocking-timeout-millis> 
+0

我可以知道這是什麼會做 – Rakesh

+0

添加回答更多詳細信息 – user7294900