【JavaWeb问题解决】javax.naming.NameNotFoundException: Name jdbc is not bound in this Context 的问题

问题描述

我们在做使用JavaWeb内置连接池获取数据源的时候,遇到了这种错误:
javax.naming.NameNotFoundException: Name jdbc is not bound in this Context;
javax.naming.NameNotFoundException: Name [jdbc/TomcatPool] is not bound in this Context. Unable to find [jdbc].
翻译过来大概是说创建的JNDI容器中没有该名称,也就是说在JNDI容器中搜索不到特定名称的数据源。

解决办法

web工程下的,WEB-INF下的web.xml添加这一段:

 <resource-ref>
    <description>DB Connection</description>
    <res-ref-name>JDBC/BBS</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
  </resource-ref>
相对应的jsp或者java代码应该为:
DataSource ds = (DataSource) ctx.lookup("java:comp/env/JDBC/TestDB");
或者
Context envCtx = (Context) ctx.lookup("java:comp/env");
DataSource ds = (DataSource) ctx.lookup("JDBC/TestDB");

不配置,或者配置错误,就会出现:Name jdbc is not bound in this Context,如果配置成 JDBC/BBS3,则会报Name jdbc is not bound in this Context。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章