【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。

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