gpt4 book ai didi

java - 为 Ingres 数据库创建 JNDI 连接

转载 作者:行者123 更新时间:2023-12-02 22:36:57 26 4
gpt4 key购买 nike

我有一个 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 文件夹中。

任何帮助或建议将不胜感激

最佳答案

我对 Ingres 不太了解,但如果尝试制作一个类似于 JBOSS 和 DB2 或 MySQL 的数据源。我注意到您在 WEB.XML 中定义了资源引用,但没有提及有关 servlet 参数的任何内容。

<servlet>
<description>Servlet Description</description>
<display-name>MyServlet</display-name>
<servlet-name>MyServlet</servlet-name>
<servlet-class>servlet.MyServlet</servlet-class>

<init-param>
<param-name>MyDB</param-name>
<param-value>java:comp/env/jdbc/MyDB</param-value>
</init-param>

<load-on-startup>1</load-on-startup>
</servlet>

然后你需要在你的 sevlet 中编码:

InitialContext initialContext = new InitialContext();
DataSource dataSource = (DataSource)initialContext.lookup(this.getInitParameter("MyDB"));

希望这有帮助。

关于java - 为 Ingres 数据库创建 JNDI 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18262343/

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