配置和使用连接池
本例子中数据库为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可以看到类似的结果