您的位置:首页 > 运维架构 > Tomcat

Tomcat8.0+Mysql5.7配置jndi

2016-01-03 10:13 906 查看
第一步:下载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.xm和tomcat\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,直接如下图,很方便。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: