我在 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:”时,这意味着什么?
Thanks!
您应该能够简单地执行以下操作:
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 http://docs.oracle.com/cd/E24329_01/apirefs.1211/e24391/weblogic/jndi/WLInitialContextFactory.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)