Je n'arrive pas à faire fonctionner ma source de données JNDI. a suivi le Grails officiel doc je mis en place un datasouce dans Config.groovy:Source de données JNDI vers oracle avec grails 1.3
grails.naming.entries = [
"mydatasource": [
type: "javax.sql.DataSource",
auth: "Container",
description: "Development Datasource",
url: "jdbc:oracle:oci:@mydb",
username: "user",
password: "pass",
maxActive: "8",
maxIdle: "4"
]
]
Alors, mon DataSource.groovy ressemble:
pooled = false
jndiName = "mydatasource"
J'ai essayé pour "mydatasource" plusieurs notations différentes comme " jdbc/mydatasource "ou" java: comp/env/jdbc/mydatasource ".
Avec chaque configuration, je reçois ceci: "javax.naming.NameNotFoundException: Name ... n'est pas lié dans ce contexte".
De même, lorsque je configure une ressource globale dans le fichier server.xml de mon tomcat 6, le grails-war déployé ne trouve pas la ressource JNDI.
Des idées pour que ça marche?
Thx
Edit:
Il fonctionne très bien! Tomcat (version 6 dans mon cas) ajoute automatiquement le préfixe "java: comp/env" à votre source de données jndi-name. Tout comme le plugin tomcat dans les grails.
Grails Config.groovy (dans mon cas pour l'environnement de développement):
grails.naming.entries = [
"jdbc/mydb": [
type: "javax.sql.DataSource",
auth: "Container",
description: "Development Datasource",
driverClassName: "oracle.jdbc.driver.OracleDriver",
url: "jdbc:oracle:oci:@mydb",
username: "user",
password: "pass",
maxActive: "8",
maxIdle: "4"
]
]
En context.xml (dans mon cas pour l'environnement de production):
<Resource name="jdbc/mydb" auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:oci:@mydb"
username="user" password="pass" maxActive="50" maxIdle="10"
maxWait="5000"/>
Dans DataSource.groovy
pooled = false
jndiName = "java:comp/env/jdbc/mydb"
Édition:
Une chose étrange si vous utilisez la source de données comme une ressource globale. La configuration qui fonctionne pour moi:
En server.xml:
<Resource name="java:comp/env/jdbc/mydb" auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:oci:@mydb"
username="user" password="pass" maxActive="50" maxIdle="10"
maxWait="5000"/>
Dans context.xml
<ResourceLink name="jdbc/mydb"
global="java:comp/env/jdbc/mydb"
type="javax.sql.DataSource" />
En DataSource.groovy:
pooled = false
jndiName = "java:comp/env/jdbc/mydb"
si vous avez besoin de garder le JNDI générique (pour qu'il puisse fonctionner sur Tomcat ou d'autres conteneurs sans modification)? – dbrin