【发布时间】:2011-09-17 17:31:18
【问题描述】:
我正在开发一个 Spring Web 应用程序。我在应用程序中使用的 JAR 文件正在使用 JNDI 查找 DataSource。我在我的 tomcat 的 server.xml 中配置了该元素。配置如下,
<GlobalNamingResources>
<Resource name="jdbc/abcd"
auth="Container"
type="javax.sql.DataSource"
maxActive="70"
maxWait="10000"
username="xxxx" password="yyyy"
validationQuery="SELECT 1 from dual"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@xx.xxx.xx.xx:xxxx:zzzz"
testOnBorrow="false"
testOnReturn="false"
testWhileIdle="true"
timeBetweenEvictionRunsMillis="120000"
minEvictableIdleTimeMillis="3600000"
/>
</GlobalNamingResources>
上面配置的资源名称,“jdbc/abcd”与JAR正在寻找的相同, 但它无法找到这个配置的数据源。有谁知道可能是什么原因?
我得到以下异常,
javax.naming.NameNotFoundException: Name jdbc is not bound in this Context
【问题讨论】:
-
你能提供应用程序上下文,你在哪里查找你的数据源
-
我没有收到您的问题。实际上是 Web 应用程序开发的新手。您能说出“应用程序上下文”是什么意思吗?
-
Spring 框架定义了一个容器区域,称为“应用程序上下文”。那是例如一个名为“application-context.xml”的 XML 文件,其中包含 Bean 定义。 Spring 文档的This part 将为您提供更多详细信息。
-
我不认为 Spring 或 Spring 配置是这里的问题。他正在使用一个外部 jar 文件,该文件似乎依赖于名为 jdbc/abcd 的 J2EE 资源。他需要做的是在 J2EE 上下文中为他的应用程序定义这个资源。我不认为 Spring 应用程序上下文是相关的。
-
不,“jdbc/abcd”是 JNDI 名称的简写。对于 Tomcat,它应该是“java:comp/env/jdbc/adbc”。
标签: spring tomcat datasource jndi