程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 圖解Tomcat5.0下配置數據庫連接池

圖解Tomcat5.0下配置數據庫連接池

編輯:關於JAVA

1.配置說明

Tomcat5.0

Eclipse3.3+MyEclipse6.0

Mysql5

mysql-connector-java-3.1.12

2.新建web工程

[1]New Project-Web Project-取名為ConnectorPool

[2]將mysql-connector-java-3.1.12加到%TOMCAT_HOME%/common/lib下。

[3]部署測試該工程。

在地址欄輸入http://127.0.0.1:8080/ConnectorPool/,將得到默認的 index.jsp。說明部署成功。

3.配置Tomcat Admin

啟動Tomcat,訪問http://127.0.0.1:8080/admin/,輸入用戶名和密碼,即可 進入管理界面。用戶名和密碼可在%Tomcat _HOME%/conf/ tomcat-users.xml中 找到。

左邊的菜單欄時有Tomcat Server,Resources,User Definition。注意,不要 在Resource中配置數據源,這是配置全局的數據源。

進入Tomcat Server->Service(Catalina)->Host(loalhost),就能找 到剛才部署的工程->Context(/ConnecterPool)。

再打開該子樹,打開Resources->Data Sources,這裡就是針對某個具體 Context的DataSource了。

Create New Data Source

①JNDI Name:jdbc/testpool //設置連接池的JNDI名;

②Data Source URL:jdbc:mysql://localhost:3306/conpool //數據庫連接 字串,forpool為數據庫名;

③JDBC Driver Class: com.mysql.jdbc.Driver //數據庫連接類 ;

④User Name:root //數據庫連接時的用戶名;

⑤Password:**** //數據庫連接時的密碼;

⑥以下默認配置。

點擊Save,配置完成(一般不需要重啟tomcat)。

4.配置項目中/WEB-INF/web.xml

<resource-ref>
   <description>DB Connection</description>
   <res-ref-name>jdbc/testpool</res-ref-name>
   <res-type>javax.sql.DataSource</res-type>
   <res-auth>Container</res-auth>
   <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

5.配置完成,在java文件中使用數據庫連接池

import javax.naming.InitialContext;
import javax.sql.DataSource;
InitialContext ctx=new InitialContext();
DataSource dataSource=(DataSource)ctx.lookup ("java:comp/env/jdbc/testpool");
Connection con=dataSource.getConnection();

通過這段代碼。即可完成數據庫連接。下面給出一個具體的測試例。

6.測試

6.1 測試用的數據庫

[1]數據庫名conpool(對Data Source URL:jdbc:mysql://localhost:3306/conpool )

[2]表名test

[3]字段名 id [varchar(12) ,notnull]

[4]表中數據

id

001

002

003

6.2測試用的代碼test.jsp

<%@ page language="java" contentType="text/html; charset=GB18030"
   pageEncoding="GB18030"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%@ page session="false"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
   <head>
    <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
    <title>test for DB connection</title>
    <%
      out.print("beginning testing...");
      out.print("<br>");
      DataSource ds = null;
      try {
        InitialContext ctx = new InitialContext();
        ds = (DataSource) ctx.lookup ("java:comp/env/jdbc/testpool");
        Connection conn = ds.getConnection();
        Statement stmt = conn.createStatement();
        // test是數據庫已有的表,
        //這裡的數據庫是前文提及的Data Source URL配置裡包含的 數據庫。
        String strSql = " select * from test";
        ResultSet rs = stmt.executeQuery(strSql);
        while (rs.next()) {
          out.print(rs.getString(1));
        }
        out.print("<br>");
        out.print("end testing.");
      } catch (Exception ex) {
        out.print("error:" + ex.getMessage());
        ex.printStackTrace();
      }
    %>
   </head>
   <body>
   </body>
</html>

6.3測試結果

7.查詢配置文件

編譯後,%TOMCAT_HOME%/conf/Catalina/localhost/目錄下有個 ConnectorPool.xml,其內容為:

<?xml version='1.0' encoding='utf-8'?>
<Context docBase="ConnectorPool" path="/ConnectorPool"
workDir="work\Catalina\localhost\ConnectorPool">
  <Resource auth="Container" description="DB Connection" name="jdbc/testpool" type="javax.sql.DataSource"/>
  <ResourceParams name="jdbc/testpool">
   <parameter>
    <name>maxWait</name>
    <value>5000</value>
   </parameter>
   <parameter>
    <name>maxActive</name>
    <value>4</value>
   </parameter>
   <parameter>
    <name>password</name>
    <value>root</value>
   </parameter>
   <parameter>
    <name>url</name>
    <value>jdbc:mysql://localhost:3306/conpool</value>
   </parameter>
   <parameter>
    <name>driverClassName</name>
    <value>com.mysql.jdbc.Driver</value>
   </parameter>
   <parameter>
    <name>maxIdle</name>
    <value>2</value>
   </parameter>
   <parameter>
    <name>username</name>
    <value>root</value>
   </parameter>
  </ResourceParams>
</Context>

參數說明:

driveClassName:JDBC驅動類的完整的名稱;

maxActive:同時能夠從連接池中被分配的可用實例的最大數;

maxIdle:可以同時閒置在連接池中的連接的最大數;

maxWait:最大超時時間,以毫秒計;

password:用戶密碼;

url:到JDBC的URL連接;

user:用戶名稱;

validationQuery:用來查詢池中空閒的連接。

本文出自 “子 孑” 博客,請務必保留此出處 http://zhangjunhd.blog.51cto.com/113473/51938

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved