我正在使用spring jdbc。如何获取Oracle数据库的当前Connection对象?我正在使用与JBOSS Wildfly服务器的连接池。我使用此代码获取了DaoImp中的连接URL:
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 :(得分: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>
答案 1 :(得分:0)
尝试在ds.xml文件中增加阻止超时。见configure data source in JBOSS
blocking-timeout-millis:此元素指定最长时间 在抛出之前等待连接时阻塞的毫秒数 一个例外。请注意,这仅在等待许可时才会阻止 对于连接,如果创建新的,将永远不会抛出异常 连接需要非常长的时间。默认值为5000。
- 等待的时间长度 连接在检查所有连接时变为可用 out(默认5000 == 5秒,从3.2.4开始是30000 == 30秒)
<blocking-timeout-millis>5000</blocking-timeout-millis>