2011-06-14 54 views
17

有沒有辦法從java中的DataSource類獲取主機名?我的意思是,我有一個DataSource對象(DS),它被註釋以獲取Jboss數據源。無論如何,我想獲取該DS中使用的主機名。從DataSource類獲取主機名

調試,我可以看到它這樣:我從DS獲得連接,然後我得到的DataSourceMetaData和裏面的東西稱爲協議連接有主機名,但我不知道如何得到它。

這裏的任何人都知道如何?或另一種獲取主機名的方式? 在此先感謝。親切的問候,RDAM

回答

33

一旦你有了DatabaseMetaData的,只需調用getURL()方法,它應該包含像這樣的主機名:

dataSource.getConnection().getMetaData().getURL(); 
+1

它包含主機名,但在JDBC URL字符串格式,這是沒有辦法的辦法爲拿到它,爲實現它。不好的做法是依靠解析數據庫URL來獲取主機名。如果URL沒有主機名怎麼辦?如果你使用不同的數據庫呢?網址格式不同。這就是爲什麼我直接看主機名 – Ron 2011-06-14 08:07:54

+1

我懷疑你是否可以......原因是數據源和連接都是抽象,不知道(不需要知道)主機名的概念。它所知道的是如何獲得連接以及如何調用查詢 – 2011-06-14 08:09:50

+0

是的,它們意味着這個概念。但照片我的問題。我正在運行-pg_dumps-(很多性能原因要這樣做,但這是其他主題),但jboss並不總是與databaServer在同一臺機器上,所以我需要傳遞主機名參數,並且使用DS是最好的我認爲的方式。因爲你肯定知道數據庫在哪裏 – Ron 2011-06-14 08:15:56