数据连接池配置错误,javax.naming.NameNotFoundException: Name jdbc is not bound in this Context

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据连接池配置错误,javax.naming.NameNotFoundException: Name jdbc is not bound in this Context相关的知识,希望对你有一定的参考价值。

web.xml内容
<Context path="/testHBN" docBase="E:\workspace\testHBN" reloadable= "true " debug= "0 ">
<Resource name="jdbc/testHBN" scope="Shareable" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/testHBN">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<!-- 数据库连接池信息 -->
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost:3306/testHBN</value>
</parameter>
<!-- 数据库的JDBC驱动程序 -->
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<!-- 下面是数据库的用户名和密码 -->
<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>password</name>
<value>123</value>
</parameter>
<!-- DBCP连接池选项 -->
<parameter>
<name>maxWait</name>
<value>3000</value>
</parameter>
<parameter>
<name>maxldle</name>
<value>100</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>10</value>
</parameter>
</ResourceParams>
</Context>

<value>jdbc:mysql://localhost:3306/testHBN</value>
localhost 换成具体ip 试试看。追问

也不行

追答

jdbc:mysql://localhost:3306/testHBN;;database=
加上数据库 试试。

参考技术A 把<Resource name="jdbc/testHBN" scope="Shareable" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/testHBN">
改成<Resource name="jdbc/用户名" scope="Shareable" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/用户名">

配置Tomcat7.1数据库连接池

目录

1.数据库连接池

连接池是一个可以存储多个数据库连接对象的容器,当程序需要连接数据库时,可直接从连接池中获取一个连接,使用结束时将连接还给连接池。这样一个连接可以被很多程序共享,无需每次与数据库交互都进行一次连接与断开操作。

2.配置Tomcat数据库连接池

由于数据库连接池是采用Tomcat来访问数据库,所以在程序中不用写访问数据库的信息,但需先配置Tomcat这些信息。(我的Tomcat版本是7.1,JDBC驱动包版本为mysql-connector-java-8.0.26.jar)

①打开Tomcat安装目录下的"conf\\context.xml"配置文件,在标签<context>中加入以下内容:

  <Resource 
   name="jdbc/booksdb" 
   auth="Container"  
   type="javax.sql.DataSource"
   maxIdle="10"
   maxWaitMillis="1000" 
   maxTotal="10" 
   username="root" 
   password="511511"
   driverClassName="com.mysql.cj.jdbc.Driver"
   url="jdbc:MySQL://localhost:3306/books"/>

②在项目WEB-INF目录下找到web.xml配置文件,打开,在标签<web-app>中加入以下内容:

<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/booksdb</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

③将JDBC驱动jar包放到Tomcat安装目录下的lib文件夹里
④重启Tomcat服务

配置完来测试一下 

dbpooltest.jsp

<%@ page language="java" import="java.util.*,java.sql.*,javax.naming.*,javax.sql.DataSource" pageEncoding="utf-8"%>

<!DOCTYPE HTML>
<html>
  <body>
    <table>
    <tr><td>ISBN</td><td>书名</td><td>版本</td><td>出版时间</td><td>价格</td></tr>
    <%
    InitialContext ctx = new InitialContext();
    DataSource ds =(DataSource)ctx.lookup("java:comp/env/jdbc/booksdb");
    Connection dbCon = ds.getConnection();
    Statement stmt = dbCon.createStatement();
    ResultSet rs = stmt.executeQuery("select * from titles");
    while(rs.next()) {
    %>
    <tr bgcolor="cyan">
    	<td><%=rs.getString(1)%></td>
    	<td><%=rs.getString(2)%></td>
    	<td><%=rs.getInt("editionNumber")%></td>
    	<td><%=rs.getInt(4)%></td>
    	<td><%=rs.getDouble("price")%></td>
    </tr>
    <%}
     	rs.close();
     	stmt.close();
     	dbCon.close();
    %>
    </table>
  </body>
</html>

DataSource ds =(DataSource)ctx.lookup("java:comp/env/jdbc/booksdb");
这句下面如果画红线,并且报这样的错:
The type java.lang.CharSequence cannot be resolved. 
就把JDK的版本降成1.6试试
改完如果还有红线,注意文件有没有重新保存,或者把这句删了再重写一遍。

以上是关于数据连接池配置错误,javax.naming.NameNotFoundException: Name jdbc is not bound in this Context的主要内容,如果未能解决你的问题,请参考以下文章

数据连接池配置错误,javax.naming.NameNotFoundException: Name jdbc is not bound in this Context

性能测试:连接池不释放

分布式 关于 druid 连接池参数问题

Jbuilder开发环境配置连接池常见错误及解决

Presto JDBC 连接池创建错误“不支持禁用自动提交模式”

spring连接池配置详解