标题:Tomcat中数据连接池的配置和相应的javabean
只看楼主
mrgreenPB
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-2-27
 问题点数:0 回复次数:6 
Tomcat中数据连接池的配置和相应的javabean

数据源Data Source)为了减少数据库的连接信息和一些逻辑名称写在JSP的源代码中,JDBC2.0提供的一个接口叫做DataSource

连接池Connection Pool)对于应用程序来说为了防止应用程序多次连接和断开数据库所耗费的时间和资源,可采用数据连接池的方式减少资源的消耗。即一次向数据库请求很多的connection。存储在一个Pool中,让需要的人从吃重取得Connection,等到用完了后在放回到数据池中。这样提供了一个缓冲区,让JSP和数据库之间得到最大的执行效率。

JNDIJava Naming and Directory Interface)提供一个接口是用户可在不知道资源所在位置的情形之下获得服务。

5.2.3 Tomcat5.X数据连接池配置:

Tomcat 5.Xconf目录下面找一个server.xml文件在里面配置数据连接池。在文件里面加入如下编码:

<Host name="localhost" appBase="webapps"

unpackWARs="true" autoDeploy="true"

xmlValidation="false" xmlNamespaceAware="false">

<Context path="/TollSystemModel" docBase="TollSystemModel" debug="0"

reloadable="true" crossContext="true">

<Resource name="jdbc/TollSystemModel" auth="Container"

type="javax.sql.DataSource"

driverClassName="org.gjt.mm.mysql.Driver"

maxIdle="30"

maxWait="1000"

username="root"

password="hacker"

url="jdbc:mysql://localhost:3306/toll_system"

maxActive="4"

autoReconnect="true"/>

</Context>

</Host>

说明:TollSystemModel是你的war包名称或者是你在webapps/创建的目录名称
jdbc/TollSystemModel中的TollSystemModel是连接数据源名称
toll_system是数据库名称

5.2.4 开发数据源的JavaBean。

下面是用来开发数据源的JavaBean。即ConnectionBean.java。利用JNDI获取数据源,等待用户使用。

package ConnectDatabaseBean;

import java.sql.Connection;

import java.sql.SQLException;

import javax.naming.InitialContext;

import javax.naming.NamingException;

import javax.sql.DataSource;

public class ConnectionBean {

private DataSource ds=null;

public ConnectionBean()

{

//通过JNDI获得数据源

try {

InitialContext ctx=null;

ctx = new InitialContext();

ds=(DataSource)ctx.lookup("java:comp/env/jdbc/TollSystemModel");

} catch (NamingException e) {

e.printStackTrace();

}

}

public Connection getConnection()

{

//获取连接

try{

return ds.getConnection();

}

catch(SQLException sqle)

{

System.err.println("cant't get Connection from data source");

sqle.printStackTrace();

return null;

}

}

}

5.2.4 封装的SQL方法的JavaBean

下面是封装的数据库操作的一些方法。即ConnectionHold.java,自行定义了一些transaction和执行的SQL程序代码,便于管理。

package ConnectDatabaseBean;

import java.sql.*;

import javax.servlet.http.HttpSessionBindingEvent;

import javax.servlet.http.HttpSessionBindingListener;

public class ConnectionHolder implements HttpSessionBindingListener{

private Connection connection=null;

private Statement stmt=null;

public ConnectionHolder(){

}

public void commit() throws SQLException{

connection.commit();

}

public ResultSet executeQuery(String sql) throws ClassNotFoundException, SQLException, Exception

{

return stmt.executeQuery(sql);

}

public int executeUpdate(String sql) throws ClassNotFoundException, SQLException, Exception

{

return stmt.executeUpdate(sql);

}

public void rollBack() throws ClassNotFoundException, SQLException, Exception

{

connection.rollback();

}

public void setAutoCommit(boolean ifAuto) throws SQLException

{

//可以设置是否自动提交

connection.setAutoCommit(ifAuto);

}

public void setConnection(Connection holdone)

{

connection=holdone;

try

{

stmt=connection.createStatement();

}

catch(SQLException sqle)

{

stmt=null;

}

}

public void valueBound(HttpSessionBindingEvent arg0) {

if(connection==null)

System.err.println("Didn't get Connection from Data Source!");

// 加入session的时候自动产生

}

public void valueUnbound(HttpSessionBindingEvent arg0) {

// TODO Auto-generated method stub

try {

connection.close();

} catch (SQLException e) {

// session注销时候调用,把连接放入池中

e.printStackTrace();

}

finally{

connection=null;

}

}

}

5.2.5 Jsp中如何运用数据源

由于数据连接池的生命周期是整个应用程序,所以他们的范围(scope)应该是application

下面是Jsp中如何引入连接池。

<jsp:useBean id="connectPool" class="ConnectDatabaseBean.ConnectionBean" scope="application"/>

<jsp:useBean id="connection" class="ConnectDatabaseBean.ConnectionHolder" scope="session">

<jsp:setProperty name="connection" property="connection" value='<%=connectPool.getConnection() %>'/>

</jsp:useBean>

搜索更多相关主题的帖子: Tomcat javabean Roman 
2006-05-27 20:17
hopemosue
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2007-10-20
得分:0 

我是初学这个的,你说的有点深奥了点,能说的简单点么?最好是初级的,先把我领进门行吧!我学到和数据库连接着就看不懂了,还有连接时需要配置什么么?谢谢


小弟初学struts,望学姐学哥多多指教
2007-10-22 19:29
静思
Rank: 3Rank: 3
来 自:沈阳
等 级:新手上路
威 望:8
帖 子:630
专家分:0
注 册:2006-2-28
得分:0 
好东西


英者自知,雄者自胜
2007-11-03 12:49
缘吇弹
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:地球
等 级:版主
威 望:43
帖 子:3038
专家分:27
注 册:2007-7-2
得分:0 

丁页


Repeat  Life=Study;Until (death);
2007-11-03 12:54
Hunter_Shit
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2007-11-3
得分:0 
怀着满腔热情进来,一看是那么深奥的东西

2007-11-04 13:44
tml327
Rank: 1
等 级:新手上路
帖 子:510
专家分:0
注 册:2007-10-30
得分:0 

我先去体验一下!
好用不?


轻狂如我,心伤谁知!
2007-11-04 19:46
luoxian_2003
Rank: 1
等 级:新手上路
威 望:2
帖 子:163
专家分:0
注 册:2006-2-22
得分:0 
非常好,

天地有正气,凛烈万古存。
2007-12-08 12:28



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-67806-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.231995 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved