Tomcat下的JNDI编程
Tomcat下的JNDI编程---数据源(mysql)
一.环境:
1.tomcat6.0
2.jdk1.6
3.mysql5
二.注意事项与相关描述(重要):
1.确认以上3个软件版本与运行情况均正常.
2.如果你之前已经搞整过,又在网上找了半天相关信息结果还是报这样那样的错误(找不到包,找不到上下文环境变量,绑定什么的等等),那么就请全部环境还原(主要是配置文件).
3.除了数据库驱动jar包(MYSQL的是mysql-connector-java-5.1.6-bin.jar)其它什么包都不用加,且需要把这个JAR包放在Tomcat的全局LIB和你工程的LIB下.如果测试中报找不到包错误,那应该是你tomcat的问题.
4.测试连接的时候一定要确定是在容器里执行的,比如写在JSP中.如果写在JAVA中写MAIN函数调用是不行的.
5.如果根据我讲的还是不行,我说如果,那么请给春哥或曾哥打电话说你信他们,之后再重起TOMCAT保管可以(你信吗?).
三.步骤:
1.修改\Tomcat 6.0\conf\context.xml,在<Context>标签中间加入(相关用户名,密码,端口什么的肯定还是要自己改一下).
Xml代码
<Resource name="jdbc/mysql"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/mm?autoReconnect=true&characterEncoding=UTF-8"
username="root"
password="root"
maxActive="100"
maxIdle="30"
maxWait="10000"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
removeAbandoned="true"
removeAbandonedTimeout="300"
logAbandoned="true"
/>
<Resource name="jdbc/mysql"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/mm?autoReconnect=true&characterEncoding=UTF-8"
username="root"
password="root"
maxActive="100"
maxIdle="30"
maxWait="10000"
factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
removeAbandoned="true"
removeAbandonedTimeout="300"
logAbandoned="true"
/>
2.测试代码
index.jsp
Html代码
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ page import="com.neo.util.tomcatDataJndi.*" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%
TestJndi tj = new TestJndi();
%>
This is my JSP page. <br>
</body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ page import="com.neo.util.tomcatDataJndi.*" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<%
TestJndi tj = new TestJndi();
%>
This is my JSP page. <br>
</body>
</html>
TestJndi.java
Java代码
package com.neo.util.tomcatDataJndi;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
public class TestJndi {
private Connection conn;
private Context ct;
public TestJndi(){
try {
ct = new InitialContext();
DataSource dataSource = (DataSource)ct.lookup("java:comp/env/jdbc/mysql");
conn = dataSource.getConnection();
System.out.print(conn.getAutoCommit());
} catch (NamingException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally{
if(conn!=null)
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
if(ct!=null)
try {
ct.close();
} catch (NamingException e) {
e.printStackTrace();
}
}
}
}