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

姜小白- 2014-07-29 12:23:34
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,如果是其他网站链接,最好把关键代码给贴出来,谢谢。
...全文
1271 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
星韵20012 2016-02-20
  • 打赏
  • 举报
回复
楼主,我也遇到了相同的问题,但是我按照您的方法并没有解决这个问题 我调用Connection的代码是

Connection conn = null;
		
		Hashtable<String, String> env = new Hashtable<String, String>();
		env.put(Context.INITIAL_CONTEXT_FACTORY,
				"weblogic.jndi.WLInitialContextFactory");
		env.put(Context.PROVIDER_URL, "t3://localhost:7005");

		// 初始化查找命名空间
		Context ctx;
		try {
			ctx = new InitialContext(env);
			DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/test");
			// 获取数据库连接
			
			conn = ds.getConnection();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return conn;

web.xml文件中配置的是

<resource-ref>  
     <description>DB Connection</description>
     <res-ref-name>jdbc/test</res-ref-name>  
     <res-type>javax.sql.DataSource</res-type>  
     <res-auth>Container</res-auth>  
  </resource-ref> 
为什么DataSource就是取不到呢 An exception occurred: javax.naming.NameNotFoundException
  • 打赏
  • 举报
回复
connection = source.getConnection("weblogic", "weblogic123"); connection = source.getConnection(); 有参数的会把初始化时的用户名和密码替换掉,没参数的就直接使用初始化给出的用户名和密码,就这点区别。
  • 打赏
  • 举报
回复
你的web.xml是否配置了映射。 remaining name 'jdbc/test' 这个错误都是找不到的问题。
姜小白- 2014-07-29
  • 打赏
  • 举报
回复
引用 2 楼 huxiweng 的回复:
java:comp/evn/jdbc/test 这里都对应吗
对应,这个什么意思呢?麻烦斑竹讲解下 昨天我用tomcat调用的,没有问题,就是java:comp/env/jdbc/test 这种写法。 然后在weblogic调用出问题,今天搞了半天,发现还是找不到思路。
姜小白- 2014-07-29
  • 打赏
  • 举报
回复
引用 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的写法上哪里有问题了,看网上的写法,无非就是我上面提到的那个了
teemai 2014-07-29
  • 打赏
  • 举报
回复
java:comp/evn/jdbc/test 这里都对应吗
  • 打赏
  • 举报
回复
不是evn,是env。
姜小白- 2014-07-29
  • 打赏
  • 举报
回复
引用 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

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

tony4geek 2014-07-29
  • 打赏
  • 举报
回复
weblogic 里面 测试连接呢

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧