Griales - Múltiples fuentes de datos
Primero, permítanme comenzar que he buscado en muchos sitios sobre la forma "correcta" de configurar múltiples fuentes de datos en Grails, cada uno de ellos (con Grails 2.0 y posterior) apuntando aldocs, sin embargo, después de hacer lo que dice la documentación me sale este error:
Error 2014-03-29 15:48:29,219 [localhost-startStop-1] ERROR context.GrailsContextLoader - Error initializing the application: Error creating bean with name 'transactionManager_lookup': Cannot resolve reference to bean 'sessionFactory_lookup' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory_lookup': Cannot resolve reference to bean 'transactionManager' while setting bean property 'transactionManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean '$primaryTransactionManager' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '$primaryTransactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Cannot resolve reference to bean 'transactionManager' while setting bean property 'transactionManager'; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'transactionManager': Requested bean is currently in creation: Is there an unresolvable circular reference?
Message: Error creating bean with name 'transactionManager_lookup': Cannot resolve reference to bean 'sessionFactory_lookup' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory_lookup': Cannot resolve reference to bean 'transactionManager' while setting bean property 'transactionManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'transactionManager': Cannot resolve reference to bean '$primaryTransactionManager' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '$primaryTransactionManager': Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory': Cannot resolve reference to bean 'transactionManager' while setting bean property 'transactionManager'; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'transactionManager': Requested bean is currently in creation: Is there an unresolvable circular reference?
Lo que me parece más interesante es que si especifico:
dataSource_lookup
Obtendré:
Error initializing the application: Error creating bean with name 'transactionManager_lookup'
Y si lo cambio a:
dataSource_mysqldb
Yo obtengo:
Error initializing the application: Error creating bean with name 'transactionManager_mysqldb'
Si no especifico una segunda fuente de datos, todo funciona bien.
Mi código:
dataSource {
logSql = true
pooled = true
dialect = org.hibernate.dialect.MySQLInnoDBDialect
driverClassName = 'com.mysql.jdbc.Driver'
username = 'myuser'
password = 'mypass'
url = 'jdbc:mysql://localhost/mydatabase'
dbCreate = 'update'
}
dataSource_mysql {
dialect = org.hibernate.dialect.MySQLInnoDBDialect
driverClassName = 'com.mysql.jdbc.Driver'
username = 'myuser'
password = 'mypass'
url = 'jdbc:mysql://localhost/mydatabase'
dbCreate = 'update'
}
dataSource_oracle {
dialect = org.hibernate.dialect.Oracle10gDialect
driverClassName = 'oracle.jdbc.driver.OracleDriver'
username = 'myuser'
password = 'mypass'
url = 'jdbc:oracle:thin:@localhost:1521:mydatabase'
dbCreate = 'update'
}
¿Qué estoy haciendo mal aquí? (Como se indicó anteriormente, si elimino los dos dataSources secundarios (dataSource_mysql y dataSource_oracle) todo funciona bien).
Gracias por adelantado. Dev: Ubuntu - Grails 2.3.7 - MySQL - Oracle 11g.