JNDI数据库连接池配置
JNDI(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。命名服务将名称和对象联系起来,使得我们可以用名称
访问对象。目录服务是一种命名服务,在这种服务里,对象不但有名称,还有属性。
tomcat配置jndi有全局配置和局部配置。
0) 先在项目中导入jar包
注意:jdk的版本跟tomcat的版本要一致。
第一种:全局配置
1)在tomcat的conf文件夹下的context.xml配置文件中加入:
<Resource
name="sqlconn"
auth="Container"
type="javax.sql.DataSource" driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://localhost:1433;databasename=Test "
username="sa"
password="123456"
maxActive="20"
maxIdle="10"
maxWait="10000"/>
2)在项目的web.xml中加入资源引用:
<resource-ref>
<description>JNDI DataSource</description>
<res-ref-name>sqlconn</res-ref-name>
<res-ref-type>javax.sql.DataSource</res-ref-type>
<res-auth>Container</res-auth>
</resource-ref>
3)在jsp中调用加载jndi方式,不可以直接用main方法测试,必须通过启动容器从jsp中调用:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>JNDI Test</title>
</head>
<body>
<%
Context ctx = new InitialContext();
Context envctx = (Context) ctx.lookup("java:comp/env");
DataSource ds = (DataSource) envctx.lookup("sqlconn");
Connection conn = ds.getConnection();
Statement st = conn.createStatement();
String sql = "select * from t_student";
ResultSet rs = st.executeQuery(sql);
while (rs.next()) {
%>
您的第一个字段内容为:<%=rs.getInt(1)%>
您的第二个字段内容为:<%=rs.getString(2)%>
您的第三个字段内容为:<%=rs.getString(3)%>
<br>
<%
}
%>
<%
out.print("使用jdbc驱动操作数据库操作成功,恭喜你");
%>
<%
rs.close();
st.close();
conn.close();
%>
</body>
</html>
第二种:局部配置。
1)在项目的META-INFO下面新建context.xml。加入:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource
name="sqlconn"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://localhost:1433;databasename=Test"
username="sa"
password="123456"
maxActive="20"
maxIdle="10"
maxWait="10000"/>
</Context>
其他配置同第一种方式。
第三种:局部配置(不推荐)。
1)在tomcat的server.xml的<host>标签内,添加:
<Context path="/slesson3" docBase="/slesson3">
<Resource
name="sqlconn"
type="javax.sql.DataSource"
driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
maxIdle="2"
maxWait="5000"
username="sa"
password="sa123"
url="jdbc:sqlserver://localhost:1433;databasename=Test"
maxActive="4"/>
</Context>
其他配置同第一种方式。
总结:如果要配置局部的话,推荐使用第二种方式,这样不依赖tomcat了。但是还是推荐使用第一种方式好,虽然依赖tomat,但是是全局的,而且可以配置多个。对于以后切换使用方便。
在项目的web.xml中添加的资源引用可有可无。