配置和使用鏈接池

本例子中數據庫爲mytest中有表table,具體信息以下html

一、在Tomcat中配置和使用鏈接池

(1)將JDBC的驅動複製到Tomcat的lib之下(如apache-tomcat-6.0.45\lib),以下圖所示java

(2)配置TOMCAT_HOME\conf\server.xml:在 <GlobalNamingResources>標籤下添加mysql

<Resource name="jdbc/mytest"
type="javax.sql.DataSource"
username="root" password=""
driverClassName="com.mysql.jdbc.Driver"
maxIdle="40"
maxWait="50"
maxActive="10"
url="jdbc:mysql://localhost:3306/mytest"
/>web

其中:sql

name="名稱"
type="類型"
username="數據庫用戶名" password="密碼"(沒有密碼時 password=""中間不能有空格)
driverClassName="驅動Class名稱(全路徑)"
maxIdle="最大空閒鏈接數"
maxWait="最大等待鏈接數"
maxActive="最大活動鏈接數" 
url="鏈接特徵字符串"數據庫

以下圖所示apache

(3)配置TOMCAT_HOME\conf\context.xml在<Context>標籤下添加瀏覽器

<ResourceLink global="jdbc/mytest" name="jdbc/mytest" type="javax.sql.DataSource"/>tomcat

目的是將server.xml配置的資源同Context(上下文)鏈接起來。jsp

如圖所示

(4)新建工程:Dynamic Web project,如圖所示

點擊next,如圖所示:

項目命名爲webdbpool

單擊Target Runtime右側的New,以下圖

選擇你的Tomcat的版本號,點擊Next,選擇你的Tomcat所在的路徑,如圖所示

點擊finish,回到建立項目的主界面,在點擊完成。
(5)修改webdbpool\WebRoot\WEB-INF\web.xml文件添加下面內容

<resource-ref>
<description>MySQL DataSource</description>
<res-ref-name>jdbc/mytest</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

以下圖所示

(6)按照下圖所示,建立WebDBUtility.java,TestDB.java和queryuser.jsp

package jead.chap4;

import java.sql.Connection;
import java.sql.SQLException;

import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class WebDBUtility {
    public static Connection getConnection(String strPoolName) throws NamingException, SQLException{
        Connection conn=null;
        InitialContext ctx=new InitialContext();
        
        DataSource ds =(DataSource) ctx.lookup("java:comp/env/"+strPoolName);
        conn=ds.getConnection();
        return conn;
        
    }

}

 

package jead.chap4;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import javax.naming.NamingException;

public class TestDB {

    public List getUserList(){
        ArrayList al=new ArrayList();
        Connection conn =null;
        Statement stmt =null;
        ResultSet rs =null;
        try {
            conn = WebDBUtility.getConnection("jdbc/mytest");
        
            stmt = conn.createStatement();
            String sql="select * from table1";
            rs =stmt.executeQuery(sql);
            while(rs.next()){
                al.add("id:"+rs.getInt("_id")+"username:"+rs.getString("_username")+"password:"
                +rs.getString("_password")+"desc:"+rs.getString("_desc")+"<br>");
            }
        } catch (NamingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally{
                try {
                    if(rs!=null)
                    rs.close();
                    if(stmt!=null)
                        stmt.close();
                    if(conn!=null)
                        conn.close();
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            
        }
        return al;
        
    }
}

 

<%@ page language="java" import="java.util.*" contentType="text/html; charset=GB2312" 
pageEncoding="GB2312"%>
<%@ page language="java" import="jead.chap4.*,java.util.List" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    <meta http-equiv="Content-Type" content="text/html;charset=GB2312">
    <title>Insert title here</title>

  </head>
  
  <body>
    <%
    out.println("用戶查詢:<br>");
    TestDB td = new TestDB();
    //List list =td.getUserList;
    List list =td.getUserList();
    for(int i=0;i<list.size();i++){
        out.println(list.get(i));
    }
     %>
  </body>
</html>

(7)發佈項目。右鍵項目->Export->WAR file,以下圖所示

點擊next,選擇要發佈的位置,以下圖所示

(8)在瀏覽器中輸入localhost:8080/webdbpool/queryuser.jsp便可訪問。結果以下:

 

二、在JBoss中配置和使用鏈接池

將驅動類mysql-connector-java-5.1.7-bin.jar放到JBOSS_HOME\server\default\lib下(注意:別放到了JBOSS_HOME\lib下)

(1)從JBOSS_HOME\docs\examples\jca下複製mysql-ds.xml到JBOSS_HOME\server\default\deploy並將其中內容改寫爲

<?xml version="1.0" encoding="UTF-8"?>

<datasources>
  <local-tx-datasource>
    <jndi-name>mytest1</jndi-name>
    <connection-url>jdbc:mysql://localhost:3306/mytest</connection-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <user-name>root</user-name>
    <password></password><!--主要若是密碼爲空就不能有空格-->
    <min-pool-size>5</min-pool-size>
    <max-pool-size>20</max-pool-size>
    <idle-timeout-minutes>0</idle-timeout-minutes>
  </local-tx-datasource>
</datasources>

這時能夠啓動JBOSS,若是配置成功則控制檯會打印出 INFO  [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=DataSourceBinding,name=mytest1' to JNDI name 'java:mytest1'

(2)和上面同樣新建工程:Dynamic Web project,如圖所示

點擊next,如圖所示:

項目命名爲JBossdbpoold

在Target Runtime下選擇JBoss Runtime

(3)和上面同樣建立,建立WebDBUtility.java,TestDB.java和queryuser.jsp

不一樣的是WebDBUtility.java

 DataSource ds =(DataSource) ctx.lookup("java:comp/env/"+strPoolName);

改成

 DataSource ds =(DataSource) ctx.lookup("java:/"+strPoolName);

TestDB.java中

conn = WebDBUtility.getConnection("jdbc/mytest");

改成

conn = WebDBUtility.getConnection("mytest");

(4)按照上面相似的方法發佈到JBOSS_HOME\server\default\deploy中,在瀏覽器中輸入http://localhost:8080/JBossdbpool/queryuser.jsp能夠看到相似的結果

相關文章
相關標籤/搜索