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

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: "javax.naming.NameNotFoundException" 是 Java 命名和目录接口 (JNDI) 中的一种常见异常,表示找不到指定的名称。这通常是因为试图查找的对象或上下文不存在。 ### 回答2: javax.naming.namenotfoundexception是一个Java异常类,用于表示命名操作无法找到所需的名称或对象。当您尝试在命名服务中查找或绑定一个名称时,如果该名称不存在,就会发生该异常。它通常被用于与JNDI(Java命名和目录接口)系统进行交互的应用程序中。 javax.naming.namenotfoundexceptionjavax.naming.exception这个异常类一样都是继承自javax.naming.namingexception。因此,它是JNDI API中的一部分,用于处理命名和目录服务的异常。此异常通常发生在以下情况下: 1. 当在JNDI命名服务中没有找到指定的名称时,就会抛出该异常。这可能是因为您要查找或绑定的名称不存在于当前范围内或不存在于命名服务中。 2. 当尝试访问命名服务时,您可能会得到javax.naming.namenotfoundexception。可能是因为您没有正确配置JNDI上下文或您没有正确的权限来访问服务。 3. 当提供的名称格式不正确时,可能会发生javax.naming.namenotfoundexception。在这种情况下,您需要检查您的JNDI名称是否具有正确的语法及格式,根据上下文进行一些调整。 解决这个异常的方法通常会根据造成该错误的原因而异。但是,以下几个步骤可以帮助您解决javax.naming.namenotfoundexception问题: 1. 检查您的配置文件和代码是否正确,并确保您的JNDI名称和上下文设置正确 2. 确保您的应用程序有足够的权限来访问JNDI上下文和服务 3. 检查您的JNDI名称是否具有正确的语法和格式 在总体来说,javax.naming.namenotfoundexception通常是在JNDI操作期间出现的,并且通常发生在低阶应用程序中,因此JNDI服务的访问需要更多的安全性和权限。确保您遵循最佳做法,并根据上下文正确配置和使用JNDI API。 ### 回答3: javax.naming.namenotfoundexcep是Java中的一个异常,通常发生在命名和目录服务API中。它表示当尝试在目录服务中查找或访问一个不存在的对象时,系统抛出的异常。 举个例子,当我们使用JNDI(Java Naming and Directory Interface) API来访问一个不存在的JNDI上下文或对象时,就会抛出javax.naming.namenotfoundexcep异常。这个异常也可能发生在企业级Java应用程序中,比如Java EE应用程序,当我们试图使用JNDI查找容器管理的组件,但是组件不存在时。 此外,javax.naming.namenotfoundexcep异常也可以在Java RMI(远程方法调用)中发生,当客户端调用一个不存在的远程对象或方法时,服务器端会抛出该异常。 为了避免这种异常的出现,我们应该在使用JNDI、Java EE或Java RMI时,始终保证指定的上下文或对象存在。如果不存在,我们应该在代码中捕获javax.naming.namenotfoundexcep异常,然后根据实际情况编写处理逻辑。 总之,javax.naming.namenotfoundexcep是Java中的一个常见异常,发生的原因是我们尝试访问一个不存在的JNDI上下文、对象或远程对象或方法。为了避免该异常的出现,我们应始终保证操作的对象存在,并根据需要捕获和处理该异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

废人一枚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值