【发布时间】:2013-08-15 21:40:15
【问题描述】:
我有一个 Java 项目,我一直在尝试为我的 Ingres 数据库创建 JNDI 连接,但没有成功。我不确定是否需要包含特定于 ingres 的内容,但经过大量研究后,我无法让事情发挥作用。
在我的项目中,我在 web.xml 文件和 context.xml 中有我的数据源信息
context.xml 有以下信息
<Context>
<Resource name="jdbc/myDB" auth="Container" type="javax.sql.Datasource"
username="myUser" password="password" driverClassName="com.ingres.jdbc.IngresDriver"
url="databaseURL" maxActive="8" maxIdle="4" maxWait="100" />
</Context>
我的 web.xml 有以下信息
<web-app>
<resource-ref>
<description>Project Descrip</description>
<res-ref-name>jdbc/myDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
在我的 java 代码中,我尝试使用以下四行来建立连接
Context initContext = new InitialContext();
Context envContext = (Context) initContent.lookup("java:comp/env");
Datasource ds = (DataSource) envContext.lookup("jdbc/myDB");
return ds.getConnection();
执行第三行后,我得到一个异常: NamingException - 无法创建资源实例
我发现了几十个具有相同例外的帖子,并尝试了建议的解决方案,但没有成功。我使用的是 Tomcat 7 服务器,并确保将必要的 ingres jar (iijdbc.jar) 包含到我的 WEB-INF/lib 文件夹和我的 tomcat lib 文件夹中。
任何帮助或建议将不胜感激
【问题讨论】:
-
您的数据库 URL 看起来很奇怪。
-
我知道,我拿出了真品。我知道我有正确的 URL,因为我已经使用它通过休眠连接到我的数据库。我只是无法使用 jndi 连接进行工作
-
也许如果您在
Context上设置调试标志,您会获得更多关于查找可能出错的信息? -
我确实考虑过这一点,但是当我将它包含在 Context 标记中时,我的程序说“将属性 'debug' 设置为 '1' 没有找到匹配的属性”所以我做了一些研究并发现调试属性已被弃用
标签: java tomcat7 datasource jndi ingres