我在 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/