weblogic - 如何在 WebLogic 上查找 JNDI 资源?

标签 weblogic jndi weblogic11g

我在 WebLogic 11g 上部署了一个遗留应用程序。该应用程序具有以下代码:

 Context context = new InitialContext();
 dataSource = (javax.sql.DataSource) context.lookup("java:myDataSource");

我还在 WebLogic 中配置了一个数据源,其 JNDI 名称为:
     jdbc/myDataSource

当上面的java代码运行时,我得到以下异常:
       javax.naming.NameNotFoundException: While trying to look up /myDataSource in /app/webapp/axis2.war/60105275.; remaining name '/myDataSource'
        at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1139)

      at weblogic.jndi.internal.ApplicationNamingNode.lookup(ApplicationNamingNode.java:144)

我对 JNDI 还很陌生,所以我的问题是?命名的脱节在哪里?当上下文查找的前缀为 "java:"时,这意味着什么?

谢谢!

最佳答案

你应该能够简单地做到这一点:

Context context = new InitialContext();
dataSource = (javax.sql.DataSource) context.lookup("jdbc/myDataSource");

如果您是从远程目的地查找它,您需要像这样使用 WL 初始上下文工厂:
Hashtable<String, String> h = new Hashtable<String, String>(7);
h.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
h.put(Context.PROVIDER_URL, pURL); //For example "t3://127.0.0.1:7001"
h.put(Context.SECURITY_PRINCIPAL, pUsername);
h.put(Context.SECURITY_CREDENTIALS, pPassword);

InitialContext context = new InitialContext(h);
dataSource = (javax.sql.DataSource) context.lookup("jdbc/myDataSource");

weblogic.jndi.WLInitialContextFactory

关于weblogic - 如何在 WebLogic 上查找 JNDI 资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6500632/

相关文章:

java - 当服务器超时时,如何使weblogic中经过身份验证的 session 失效?

java - JMS 客户端应用程序和业务 Activity 监视器

java - 在 Tomcat 中调用 JNDI 数据源的正确方法

java - Weblogic11g 中 Reflecions 0.9.9-RC1 的类加载器错误

oracle11g - 如何启用DomainRuntimeMBean?

java - 如何通过 Weblogic 10.3.1.0 控制台修改给定 MDB 的 **max-beans-in-free-pool** 属性?

java - 从 Tomcat 使用 WebLogic (t3) JMS

java - EJB 2.1 项目中应用程序范围的资源引用

java - 在 IntelliJ 中使用数据源、JNDI API

java - JMS TextMessage - 部署到 WebLogic 后不工作