2017-07-11 28 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