如何获取当前连接URL?

时间:2017-07-11 04:50:38

标签: java spring spring-jdbc

我正在使用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();
            }

        }
    }

2 个答案:

答案 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。

Default values

  

- 等待的时间长度   连接在检查所有连接时变为可用   out(默认5000 == 5秒,从3.2.4开始是30000 == 30秒)

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