tomcat dbcp jndi 配置

字体大小: 中小 标准 ->行高大小: 标准
使用tomcat6,mysql6
 

1)添加jar包
 tomcat6中 TOMCAT_HOME/lib 下是公用jar包
 
dbcp需要3个jar包:Jakarta-Commons DBCP,Jakarta-Commons Collections,Jakarta-Commons Pool,
 但是tomcat6已经用1个tomcat-dbcp.jar包含了这3个jar包,该包在 TOMCAT_HOME/lib 下,因此在tomcat下不需要再添加dbcp相关的3个包;
 
将mysql-connector-java-5.1.6-bin.jar 拷贝到 TOMCAT_HOME/lib 下;
 
 
 
 
 
2)添加数据源
 在 TOMCAT_HOME/conf/context.xml 中 添加数据源:   
 


Xml代码 
1.<!-- The contents of this file will be loaded for each web application -->  
2.<Context>  
3.  
4.    <!-- Default set of monitored resources -->  
5.    <WatchedResource>WEB-INF/web.xml</WatchedResource>  
6.      
7.    <!-- Uncomment this to disable session persistence across Tomcat restarts -->  
8.    <!-- 
9.    <Manager pathname="" /> 
10.    -->  
11.  
12.    <!-- Uncomment this to enable Comet connection tacking (provides events  
13.         on session expiration as well as webapp lifecycle) -->  
14.    <!-- 
15.    <Valve className="org.apache.catalina.valves.CometConnectionManagerValve" /> 
16.    -->  
17.    <Resource name="jdbc/test" auth="Container" type="javax.sql.DataSource"  
18.                   maxActive="100" maxIdle="30" maxWait="10000"  
19.                   username="root" password="password" driverClassName="com.mysql.jdbc.Driver"  
20.                   url="jdbc:mysql://localhost:3306/testit?autoReconnect=true"/>  
21.  
22.</Context>  
 
 
 
3)在web.xml 中引用数据源
 
 
 


Xml代码 
1.<?xml version="1.0" encoding="ISO-8859-1"?>  
2.  
3.<web-app xmlns="http://java.sun.com/xml/ns/j2ee"  
4.    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
5.    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd"  
6.    version="2.4">  
7.  
8.    <display-name>JNDI Test</display-name>  
9.  
10.      
11.    <description>A test for using of JNDI</description>  
12. <resource-ref>  
13.      <description>DB Connection</description>  
14.      <res-ref-name>jdbc/test</res-ref-name>  
15.      <res-type>javax.sql.DataSource</res-type>  
16.      <res-auth>Container</res-auth>  
17. </resource-ref>  
18.    <welcome-file-list>  
19.      <welcome-file>index.jsp</welcome-file>  
20.      <welcome-file>index.html</welcome-file>  
21.    </welcome-file-list>  
22.  
23.</web-app>  
 
 
 
 
 
4)在jsp(或java)中使用数据源
 
 
 


Java代码 
1.<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>  
2.<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
3.  
4.<sql:query var="rs" dataSource="jdbc/test">  
5.select * from test  
6.</sql:query>  
7.  
8.<html>  
9.  <head>  
10.    <title>DB Test</title>  
11.  </head>  
12.  <body>  
13.  
14.  <h2>Results</h2>  
15.    
16.<c:forEach var="row" items="${rs.rows}">  
17.    id ${row.id}<br/>  
18.    str ${row.str}<br/>  
19.</c:forEach>  
20.  
21.  </body>  
22.</html>  
 
 5)tomcat的jndi实用类
 


Java代码 
1.package dbcp;  
2.  
3.import java.sql.Connection;  
4.import java.sql.ResultSet;  
5.import java.sql.SQLException;  
6.import java.sql.Statement;  
7.import javax.naming.Context;  
8.import javax.naming.InitialContext;  
9.import javax.naming.NamingException;  
10.import javax.sql.DataSource;  
11.  
12./** 
13. * @author space 
14. * @date Aug 12, 2008 12:57:30 PM 
15. */  
16.public class TomcatDbcp {  
17.    private static Context CTT;  
18.    static {  
19.        try {  
20.            CTT = (Context) new InitialContext().lookup("java:comp/env");  
21.        } catch (NamingException e) {  
22.            e.printStackTrace();  
23.            throw new RuntimeException("jndi 数据源加载失败!");  
24.        }  
25.    }  
26.  
27.    /** 默认构造函数,没有创建数据源 */  
28.    public TomcatDbcp() {  
29.    }  
30.  
31.    /** 参数是数据源名,创建数据源 */  
32.    public TomcatDbcp(String resourceName) {  
33.        setDs(resourceName);  
34.    }  
35.  
36.    private DataSource ds;  
37.  
38.    public void setDs(String resourceName) {  
39.        try {  
40.            ds = (DataSource) CTT.lookup(resourceName);  
41.        } catch (NamingException e) {  
42.            e.printStackTrace();  
43.            throw new RuntimeException("jndi 数据源创建失败!");  
44.        }  
45.    }  
46.  
47.    private Connection conn;  
48.  
49.    /** 其它类通过该方法调用 conn */  
50.    public Connection getConn() {  
51.        return conn;  
52.    }  
53.  
54.    /** 初始化conn */  
55.    public void initConn() {  
56.        try {  
57.            conn = ds.getConnection();  
58.        } catch (SQLException e) {  
59.            e.printStackTrace();  
60.            System.out.println("获得连接失败!");  
61.        }  
62.    }  
63.  
64.    /** 关闭conn */  
65.    public void closeConn() {  
66.        try {  
67.            if (conn != null) {  
68.                conn.close();  
69.            }  
70.        } catch (SQLException e) {  
71.            e.printStackTrace();  
72.        }  
73.    }  
74.  
75.    public static void main(String[] args) {  
76.        TomcatDbcp td = new TomcatDbcp("jdbc/test");  
77.        td.initConn();  
78.        try {  
79.            Statement stmt = td.getConn().createStatement();  
80.            ResultSet rs = stmt.executeQuery("select * from test limit 1 ");  
81.            rs.first();  
82.            System.out.println("id:" + rs.getInt(1) + ", str:" + rs.getString(2));  
83.            td.closeConn();  
84.        } catch (SQLException e) {  
85.            e.printStackTrace();  
86.        }  
87.    }  
88.}  
 
 
 
6)jsp中调用tomcat dbcp实用类
 
 
 


Java代码 
1.<%@ page language="java" import="dbcp.TomcatDbcp ,java.sql.*" %>  
2.  
3.<html>  
4.  <head>  
5.    <title>DB Test</title>  
6.  </head>  
7.  <body>  
8.  <h2>Results</h2>  
9.<hr/>  
10.<%  
11.        TomcatDbcp td = new TomcatDbcp("jdbc/test");  
12.        td.initConn();  
13.        try {  
14.            Statement stmt = td.getConn().createStatement();  
15.            ResultSet rs = stmt.executeQuery("select * from test limit 1 ");  
16.            rs.first();  
17.            out.println("id:" + rs.getInt(1) + ", str:" + rs.getString(2));  
18.            td.closeConn();  
19.        } catch (SQLException e) {  
20.            e.printStackTrace();  
21.        }  
22.%>  
23.  </body>  
24.</html>  

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/68809.html