簡體   English   中英

如何獲取當前的連接URL?

[英]How to get the current connection url?

我正在使用spring jdbc。 如何獲得Oracle數據庫的當前Connection對象? 我正在將連接池與JBOSS Wildfly服務器一起使用。 我使用以下代碼在DaoImp中獲取連接網址:

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方法中編寫了相同的代碼,那么我無法在那獲得連接。錯誤如下

在我的setJdbcTemplate方法中,在配置的阻止超時(0 [ms])中沒有托管連接可用

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();
            }

        }
    }

您可以在-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>

嘗試增加ds.xml文件中的阻止超時。 請參閱在JBOSS中配置數據源

blocking-timeout-millis:此元素指定在引發異常之前等待連接時要阻塞的最長時間(以毫秒為單位)。 請注意,這僅在等待連接許可時才阻塞,並且如果創建新連接花費的時間過長,則永遠不會拋出異常。 默認值為5000。

默認值

-簽出所有連接后等待連接可用的時間長度(默認值為5000 == 5秒,從3.2.4開始為30000 == 30秒)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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