h1

Test de integración con JNDI

16 marzo 2011

He estado un buen rato buscando cómo hacer que un test de integración tenga acceso al datasource configurado mediante JNDI en una aplicación basada en Spring e Hibernate, y aunque finalmente ha sido muy sencillo las explicaciones que he encontrado no explicaban el quid de la cuestión.

Spring 2.5 ha introducido un stub para ofrecer búsquedas mediante JNDI, SimpleNamingContextBuilder. Pero lo interesante es que esté disponible cuando se ha de resolver la llamada, que en este caso es durante la carga de la configuración de Hibernate. Para ello el truco está en configurarlo en el constructor del test, de la siguiente forma:

try {
	SimpleNamingContextBuilder builder = SimpleNamingContextBuilder.emptyActivatedContextBuilder();
	DriverManagerDataSource driver = new DriverManagerDataSource("jdbc:mysql://localhost:3306/myapp", "root", "admin");
	driver.setDriverClassName("com.mysql.jdbc.Driver");
	builder.bind("java:comp/env/jdbc/DSMyapp", driver);
} catch (NamingException e) {
       e.printStackTrace();
}

De esta forma, cuando se haga la llamada JNDI por el nombre env/jdbc/DSMyapp se encontrará.

La respuesta final la he encontrado en el libro Pro Spring 2.5 de Apress.

Advertisement

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.