配置和使用连接池

本例子中数据库为mytest中有表table,具体信息如下

1、在Tomcat中配置和使用连接池

(1)将JDBC的驱动复制到Tomcat的lib之下(如apache-tomcat-6.0.45\lib),如下图所示

(2)配置TOMCAT_HOME\conf\server.xml:在 <GlobalNamingResources>标签下添加

<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"
/>

其中:

name="名称"
type="类型"
username="数据库用户名" password="密码"(没有密码时 password=""中间不能有空格)
driverClassName="驱动Class名称(全路径)"
maxIdle="最大空闲连接数"
maxWait="最大等待连接数"
maxActive="最大活动连接数" 
url="连接特征字符串"

如下图所示

(3)配置TOMCAT_HOME\conf\context.xml在<Context>标签下添加

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

目的是将server.xml配置的资源同Context(上下文)连接起来。

如图所示

(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即可访问。结果如下:

 

2、在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可以看到类似的结果

 

posted @ 2016-06-11 19:36  若水之畔  阅读(357)  评论(0编辑  收藏  举报