Tomcat8.0+Mysql5.7配置jndi

本文介绍如何在Tomcat环境下配置JNDI连接MySQL数据库,包括下载JDBC驱动、创建数据库、配置Web项目及Tomcat等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一步:下载mysql数据库的jdbc驱动,Connector/J,下载解压后的jar放到tomcat安装路径的lib下,不要放错到bin下咯。

第二步:创建数据库,这里数据库名为testdb,mysql数据库名不区分大小写,默认小写,就最好小写咯。CREATE DATABASE `testdb`  DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

第三步:eclipse中创建Dynamic Web Project项目,项目名testjndi,内容如下:

整个WEB-INF/web.xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>test</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
  <resource-ref>
    <res-ref-name>jdbc/testjndi</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>
</web-app>


整个WebContent/index.jsp文件内容如下:( 自己手写很容易把包引错

<%@page import="javax.naming.InitialContext"%>
<%@page import="javax.sql.DataSource"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
		out.print("MySQL 数据源测试开始..." + "<br/>");
		DataSource ds = null;
		try {
			InitialContext ctx = new InitialContext();
			ds = (DataSource) ctx.lookup("java:comp/env/jdbc/testjndi");
			Connection conn = ds.getConnection();
			conn.close();
			out.print("MySQL 数据源测试成功!");
		} catch (Exception ex) {
			out.print("出现意外,信息是:" + ex.getMessage());
			ex.printStackTrace();
		}
	%>
</body>
</html>



第4步:修改tomcat/conf/context.xml,整个文件内容如下,其中 <Resource.../>这段是新加的,注意红色字体,其中jdbc/testjndi和jsp和web.xml中保持一致。

<?xml version="1.0" encoding="UTF-8"?>

<Context>
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>

	 <Resource
          name="jdbc/testjndi"
          type="javax.sql.DataSource"
          password="123"
          driverClassName="com.mysql.jdbc.Driver"
          maxIdle="2"
          maxWait="50"
          username="root"
          url="jdbc:mysql://localhost:3306/testdb"
          maxActive="4"/>

</Context>

第五步:eclipse tomcat中启动项目,运行http://localhost:8080/testjndi/,如下图



备注一:如果运行得到:Cannot create JDBC driver of class '' for connect URL 'null',请再检查你的context.xml,是否配置正确,尤其是看Resource name属性是否为jdbc/testjndi和url是否正确,eclipse中clean项目会重新生成配置,具体看eclipse的配置情况

备注二:网上还有一种在tomcat\conf\server.xmtomcat\conf\Catalina\localhost下配置方式:

1.整个localhost\项目名.xml内容如下:注意这个文件是手动添加的,文件名名称为项目名

<Context>
<ResourceLink global="jdbc/testjndi" name="jdbc/testjndi" type="javax.sql.DataSource"/>
</Context>
2.部分server.xml内容如下:是在<Host>中加Context,在Context中加Resource,Resource内容和上面是一致的,如果eclipse中tomcat配置合适<Context..>是自动生成的,只需加Resource



3.eclipse tomcat中启动项目,运行http://localhost:8080/testjndi/,完成


备注三:eclipse_tomcat_默认配置如下图:


删除eclipse中的tomcat,server。重新建server,配置tomcat如下图,此种配置方式是最佳实践,会少许多bug,默认的在eclipse工作空间中,路径太深:



备注四:我的标题是Tomcat8.0+Mysql5.7配置jndi,其实和tomcat、msql、jdk,版本没有关系,只是开始在这个配置没弄出来,后来换低版本弄出来了,然后又在高版本配置好了。

备注五:更完整资源已上传到百度云中。

备注六:最新发现,不用在tomcat/conf/context.xml中配置Resource,直接如下图,很方便。







评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值