Code Bye

weblogic工程中访问jndi数据源出错

weblogic工程中配置了jndi数据源

在工程代码中调用时出错

 Hashtable<String, String> env = new Hashtable<String, String>();  
 env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");  
 env.put(Context.PROVIDER_URL,"t3://10.135.181.106:7001");  
	    
 Context ic = null;
 DataSource source = null;
 try {
	 ic = new InitialContext(env);
	 source = (DataSource) ic.lookup("java:comp/evn/jdbc/test");

报错 javax.naming.NameNotFoundException: While trying to look up comp/evn/jdbc/test in /app/webapp/servlet/26434742.; remaining name “”comp/evn/jdbc/test””
at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1139)

修改为 

source = (DataSource) ic.lookup("jdbc/test");

时,报错
javax.naming.NameNotFoundException: While trying to lookup “”jdbc.test”” didn””t find subcontext “”jdbc””. Resolved “”””; remaining name “”jdbc/test””
at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1139)

现在这个数据源的配置就是拿不到。
请问下,哪位大神搞过这个东东,是我的理解有错误,还是代码有错误,或者能给一些思路。
非常感谢。 

公司网络只可以上csdn,如果是其他网站链接,最好把关键代码给贴出来,谢谢。


100分
不是evn,是env。

50分
java:comp/evn/jdbc/test
这里都对应吗
引用 1 楼 fangmingshijie 的回复:

不是evn,是env。

谢谢斑竹,这个却是我粗心问题。还是有错误
javax.naming.NameNotFoundException: While trying to look up comp/env/jdbc/test in /app/webapp/servlet/16151393.; remaining name “”comp/env/jdbc/test””
at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1139)

 While trying to look up comp/env/jdbc/test in /app/webapp/servlet/16151393 in 后面这一堆是什么意思呢
我现在怀疑 是不是 我的调用jndi的写法上哪里有问题了,看网上的写法,无非就是我上面提到的那个了

引用 2 楼 huxiweng 的回复:

java:comp/evn/jdbc/test
这里都对应吗

对应,这个什么意思呢?麻烦斑竹讲解下
昨天我用tomcat调用的,没有问题,就是java:comp/env/jdbc/test 这种写法。
然后在weblogic调用出问题,今天搞了半天,发现还是找不到思路。


140分
你的web.xml是否配置了映射。
remaining name “”jdbc/test”” 这个错误都是找不到的问题。

10分
weblogic 里面 测试连接呢
引用 2 楼 huxiweng 的回复:

java:comp/evn/jdbc/test
这里都对应吗

引用 6 楼 rui888 的回复:

weblogic 里面 测试连接呢

引用 5 楼 fangmingshijie 的回复:

你的web.xml是否配置了映射。
remaining name “”jdbc/test”” 这个错误都是找不到的问题。

web.xml中配置了映射 

找到问题了,我的是weblogic开发环境,开发环境中默认的工程是挂在AdminServer 下面的
我之前没有给数据源指定服务器目标,指定后就可以访问了 

还有一个问题顺便问一下,我获取连接的时候
采用 

//  weblogic 是域控制台的用户名,weblogic123是密码
connection = source.getConnection("weblogic", "weblogic123");
connection = source.getConnection();

这两种方式都可以, 其中
username  the database user on whose behalf the connection is being made  为其建立连接的数据库用户
password  the user””s password

请问下,这两种连接方式有什么区别,谢谢。

connection = source.getConnection(“weblogic”, “weblogic123”);
connection = source.getConnection();

有参数的会把初始化时的用户名和密码替换掉,没参数的就直接使用初始化给出的用户名和密码,就这点区别。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明weblogic工程中访问jndi数据源出错