Inyectar un Datasource Ingres en Grails
Estos días me he encontrado con la necesidad de inyectar un datasource a un Dao de una librería externa a mi aplicación, siendo éste, un datasource distinto al de mi aplicacion y a través del cuál se establece una conexión a una base de datos de INGRES. De primeras…suena mal pero luego resulta ser muy sencillo.
Respecto a que sea INGRES y no otro gestor de BBDD más común como ORACLE o MySQL … ningún problema. Ni siquiera si este va a ser el gestor de la BBDD de la aplicación. En su día me encontré con este caso y tampoco tuve problemas, tan sólo alguna incompatibilidad con algún tipo de datos pero nada importante.
Sobre a que haya que utilizar otro datasource distinto al de mi aplicación, ningún problema tampoco, se le llama de otra forma y listo. Y finalmente, ¿Cómo o dónde inyectarlo? Pues he echado mano del resources.xml y ahí me he definido el datasource y el bean que hace referencia al Dao:
resources.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> <bean id="dataSourceIngres"> <property name="driverClassName" value="ca.ingres.jdbc.IngresDriver" /> <property name="url" value="jdbc:ingres://DATABASE" /> <property name="username" value="USERNAME" /> <property name="password" value="PASSWORD" /> </bean> <bean id="ingresDao" factory-method="getInstance"> <property name="dataSource"><ref local="dataSourceIngres"/></property> </bean> </beans>
y por último se hace un getInstance() del Dao y se llama al método que corresponda pasándole los argumentos que sean necesarios

Buenos días,
¿Qué versión de Ingres estás utilizando? Creo que es mejor que utilices la clase “com.ingres.jdbc.IngresDriver” con Ingres 9.0 o superior.
un saludo
grant
La versión es la 2.6.
Esos son los datos que me han pasado para conectarme a la base de datos ya que yo no me encargo de ese tema.
He probado con “com.ingres.jdbc.IngresDriver” como tu me dices y funciona igual aunque no sé cuál es mejor ya que yo no soy una experta en Ingres precisamente.
Gracias por la información
Saludos
Fátima
Entonces nada,
Por razones históricas hay 3 clases distintas y 2 archivos jar (edbc.jar y iijdbc.jar). Con versiones nuevos, de la serie 9.x, es mejor usar iijdbc.jar con “com.ingres.jdbc.IngresDriver”. A lo mejor nos quitaremos distribuiendo el edbc.jar, pero por razones de compatibilidad sigue siendo instalado. ¿Te importa si traduzco este post al inglés para mi blog? Será útil para los usuarios que no hablan castellano.
gracias
grant
Nosotros usamos iijdbc-3.2.2.jar
No me importa que traduzcas el post a inglés, siempre y cuando hagas referencia a mi blog y así nos publicitamos mutuamente, de hecho, en algún momento se me ha pasado por la cabeza escribir algunos post en inglés, pero no estoy muy suelta con el idioma y además, ya que se escribe poco en castellano sobre estás cosas pues así contribuyo.
Saludos
Lo de no escribir en otro idioma, lo entiendo. Lo necesita mucho tiempo y nadie quiere hacer errores pero así aprendemos. Bueno mi traducción está hecho – http://blogs.planetingres.org/grant/2009/09/30/using-ingres-with-grails-via-a-hibernate-dao/. Espero que está bien.
saludos