Я не могу запустить свой источник данных JNDI.
Следуя официальному документу Grails, я создал базу данных в Config.groovy:
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"
]
]
Итак, мой DataSource.groovy выглядит так:
pooled = false
jndiName = "mydatasource"
Я попытался использовать для mydatasource несколько разных обозначений, таких как «jdbc / mydatasource» или «java: comp / env / jdbc / mydatasource».
При каждой конфигурации я получаю следующее: «javax.naming.NameNotFoundException: Name ... не связан в этом контексте».
Также, когда я настраивал глобальный ресурс в файле server.xml моего tomcat 6, развернутая grails-war не может найти ресурс JNDI.
Есть идеи, как заставить это работать?
Thx
Edit:
Работает отлично!
Tomcat (в моем случае версия 6) автоматически добавляет префикс "java: comp / env" к вашему jndi-имени источника данных.
Так же как и плагин для кота в Grails.
Grails Config.groovy (в моем случае для среды разработки):
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"
]
]
В context.xml (в моем случае для производственной среды):
<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"/>
In DataSource.groovy
pooled = false
jndiName = "java:comp/env/jdbc/mydb"
Edit:
Странная вещь, если вы используете источник данных в качестве глобального ресурса.
Конфигурация, которая работает для меня:
В 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"/>
В context.xml
<ResourceLink name="jdbc/mydb"
global="java:comp/env/jdbc/mydb"
type="javax.sql.DataSource" />
В DataSource.groovy:
pooled = false
jndiName = "java:comp/env/jdbc/mydb"