【发布时间】:2013-04-19 13:53:09
【问题描述】:
我已经使用我的 weblogic 控制台创建了一个 JNDI 数据源,但我无法从我的 web 应用程序访问该对象。以下是详细内容
在 weblogic 10.3.6 中,我将数据源的 JNDI 名称指定为:jdbc/mydb
为了从我的 Web 应用程序获取数据库连接,我在我的 Web 应用程序中编写了以下代码:
Context initContext = new InitialContext();
DataSource ds = (DataSource)initContext.lookup("java:/comp/env/jdbc/mydb");
jndiConnection = ds.getConnection();
之前我使用 Tomcat 作为服务器,当我在文件 tomcat/conf/server.xml 中配置资源详细信息时,我能够获得数据库连接,但是当我使用开始使用 weblogic 服务器时,出现以下错误:
Cannot establish DB connection to JNDI:java:/comp/env/jdbc/mydb While trying to look up /comp/env/jdbc/mydb in /app/webapp/sample.war/1811641702. caused by: javax.naming.NameNotFoundException: While trying to look up /comp/env/jdbc/mydb in /app/webapp/sample.war/1811641702.; remaining name '/comp/env/jdbc/mydb'
我已尝试此链接中提到的选项:How to lookup JNDI resources on WebLogic?,但我仍然面临问题。
请让我知道我在哪里做错了,访问JNDI对象的过程是什么。
【问题讨论】:
-
你的意思是把它命名为“jdbc/mydb”而不是“java/mydb”吗?
-
@better_use_mkstemp 是的,我已经更新了我的问题,感谢您的指点。
-
您还尝试过问题链接中的第二种解决方案吗?第一个答案适用于 Tomcat,但我不确定它是否总是适用于 weblogic。删除 java:comp/env/ 并尝试 initContext.lookup("jdbc/mydb")?
-
是的,即使这不起作用,在这种情况下我也会遇到以下错误:无法建立与 JNDI 的数据库连接:jdbc/mydb 在尝试查找“jdbc.mydb”时没有找到子上下文“ jdbc'。解决了由以下原因引起的“”:javax.naming.NameNotFoundException:尝试查找“jdbc.mydb”时未找到子上下文“jdbc”。解决 '';剩余名称“jdbc/mydb”
-
答案也适用于 Weblogic 12.1.3
标签: jakarta-ee weblogic datasource jndi