数据连接池配置错误,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>
localhost 换成具体ip 试试看。追问
也不行
追答jdbc:mysql://localhost:3306/testHBN;;database=
加上数据库 试试。
<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