gpt4 book ai didi

oracle - 使用 grails 1.3 到 Oracle 的 JNDI 数据源

转载 作者:行者123 更新时间:2023-12-02 14:28:28 24 4
gpt4 key购买 nike

我无法让我的 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 ... is not bound in this Context”。

此外,当我在我的 tomcat 6 的 server.xml 中设置全局资源时,部署的 grails-war 找不到 JNDI 资源。

有什么想法可以让这些东西正常工作吗?

谢谢

编辑:

它工作正常!
Tomcat(在我的例子中是版本 6)自动将前缀“java:comp/env”添加到您的数据源 jndi-name。
grails中的tomcat插件也是如此。

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"/>

在 DataSource.groovy
pooled = false
jndiName = "java:comp/env/jdbc/mydb"

编辑:

如果您将数据源用作全局资源,那将是一件奇怪的事情。
适合我的配置:

在 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"

最佳答案

JNDI 前缀是 java:comp/env/对于 Tomcat ,所以在你的情况下

jndiName = "java:comp/env/mydatasource"

在 DataSource.groovy 中。

供引用: Grails Docs .

编辑:您的 Config.groovy 也缺少 driverClassName属性(property)。我 think它是
driverClassName: "oracle.jdbc.driver.OracleDriver",

关于oracle - 使用 grails 1.3 到 Oracle 的 JNDI 数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4214404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com