2011-06-14 12 views
17

¿Hay alguna forma de obtener el nombre de host de la clase DataSource en java? Quiero decir, tengo un objeto DataSource (DS), que está anotado para obtener el origen de datos Jboss. De todos modos, quiero obtener el nombre de host utilizado en ese DS.Obtiene el nombre de host de una clase DataSource

Depuración, puedo verlo de esta manera: obtengo la conexión de DS, luego obtengo el DataSourceMetaData y dentro de eso hay algo llamado Conexión de protocolo que tiene el nombre de host, pero no sé cómo obtenerlo .

¿Alguien aquí sabe cómo? u otra forma de obtener el nombre de host? Gracias de antemano. Saludos cordiales, Rdam

Respuesta

33

vez que tenga el DatabaseMetaData, simplemente llame al método getURL() que debe contener el nombre de host de este modo:

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

que contiene el nombre de host, pero en un formato String URL JDBC, que no es el camino para conseguirlo. Es una mala práctica depender de analizar una URL de base de datos para obtener un nombre de host. ¿Qué pasa si la URL no tiene un nombre de host? ¿Qué sucede si utiliza diferentes bases de datos? Las URL están en diferentes formatos. Es por eso que estoy buscando el nombre de host directamente – Ron

+1

dudo si puede ... la razón es que tanto DataSource como Connection son abstracciones que no conocen (no necesitan saber) el concepto de nombre de host. Todo lo que sabe es cómo obtener una conexión y cómo llamar consultas –

+0

Sí, están destinados a ese concepto. Pero imagina mi problema. Estoy ejecutando -pg_dumps- (muchas razones de rendimiento para hacer eso, pero ese es otro tema), pero el jboss no siempre está en la misma máquina que el databaServer, así que necesito pasar el parámetro de nombre de host, y usar el DS es el mejor como yo creo Porque sabes con certeza dónde está la base de datos – Ron

Cuestiones relacionadas