2011-06-14 132 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