热门文章
阿标在线 动力3.62HTML生成3.62网站文件说明
动力3.62整合动网7.0 SP2插
MDAC2.8 下载!
动力3.62版 防止垃圾留言
动力3.6全方位改动方法
让3.62不同频道实现不同风
把3.62首页登陆为横向代码
动易3.6首页随机FLASH修改
362首页和文章频道页图文幻
个性化修改3.6宝典
3.62轻易实现网摘功能
如何正确统计中文字数?
弹出JAVASCRIPT语法错误对
后台使“网站顶部LOGO地址
最新图片文章横向移动的修
html 生成艺术字
3.6 Sp2 Logo和Banner及广
日期值的计算
汉字转拼音
首页“图片更新”图片滚动
简体中文转换为繁体中文的
如何在css中定义链接的下划
jsp中实现连接池
[ 录入:阿标 | 点击数: | 更新时间:2005-3-18 12:56:00]
JSPCN主页 | 虚拟主机 | 技术文章 | 代码下载 | 技术论坛 | 我要留言 | 关于我们 | 友情链接 | 联系我们
做最专业的JSP中文网站 当前位置:首页--文章分类--JSP技术--数据库
文章搜索:
关键字 标题 内容
JSPCN文章目录分类
JSP其他 [40] 教程系列 [87]
JAVABEAN [5] 图片声音 [8]
JSP实例 [22] JSP配置 [54]
上传问题 [8] 时间相关 [3]
文件操作 [58] STRUTS [61]
中文问题 [16] 数据库 [115]
JAVAMAIL [36] 开发工具 [8]
JSP基础 [127] EJB [145]
声音图片 [27] XML [80]
JAVA线程 [38] J2ME [65]
SUN [89] Java API [20]
考试相关 [38] APPLET [57]
JAVA类 [113] Application [6]
Swing [11] J2EE [108]
异常处理 [11] Servlet [33]
JAVA基础 [166] JAVA实例 [56]
JAVA网络 [38] B/S开发 [12]
B/S其他 [3] 代码收集 [6]
原子代码 [3] Jbuilder [29]
RESIN [21] JBOSS [11]
weblogic [34] eclipse [12]
Tomcat [60] sql server [4]
MYSQL [19] ORACLE [46]
WWW服务 [2] 邮件服务 [4]
热点文章链接
JSP数据库连接池的必要性 [5543]
Tomcat4的数据库连接池配置 [5371]
数据库连接池Java实现小结 [4668]
jsp连接数据库大全 [3441]
一种简单JDBC连接池的实现 [2447]
通过JDBC连接oracle数据库的十大技巧 [2243]
用连接池提高Servlet访问数据库的效率 [1681]
RESIN/TOMCAT和MYSQL的连接解决方法 [1294]
JSP数据库操作例程 [865]
JSP数据库连接大全 [603]
利用weblogic的POOL(连接池)连接数据库 [316]
通过JDBC连接oracle数据库的十大技巧 [277]
Jsp中调用Oracle存储过程的小例子 [195]
用Java实现数据库应用系统 [11]
全面解析JDBC(一) [9]
相关文章链接
jsp中实现连接池
作者:未知 文章来源:www.jspcn.net
访问次数: 次 加入时间:2005-01-19
在JSP里有两种实现的办法,一种是用JNDI(Java Naming Directory Interface),这可能和应用服务器有关,如果是Resin,先在resin.conf里定义
<resource-ref>
<res-ref-name>jdbc/oracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<init-param driver-name="oracle.jdbc.driver.OracleDriver"/>
<init-param url="jdbc:oracle:thin:@192.168.1.1:1521:oracle"/>
<init-param user="system"/>
<init-param password="manager"/>
<init-param max-connections="20"/>
<init-param max-idle-time="30"/>
</resource-ref>
如果为Tomcat,在Server.xml里面定义,有关的资料可以查文档,然后在jsp里这样用
try{
javax.naming.Context env = (Context)new InitialContext().lookup("java:comp/env");
javax.sql.DataSource pool=(javax.sql.DataSource) env.lookup("jdbc/oracle");
}catch(Exception e){System.err.println("Exception error:"+e.getMessage());}
try {
Connection conn = pool.getConnection();
}catch(Exception e){System.out.println("Exception error:"+e.getMessage());}
通过这段代码,你就获得从连接池里获得了一个连接conn。如果想用普通的连接池,那只能用JavaBean了,先写一个ConnectionPool的java的类,然后直接从连接池中获得连接,下面是我一个连接池的JavaBean
ConnectionPool.java如下:
import java.io.PrintStream;
import java.sql.Connection;
import java.util.Vector;
// Referenced classes of package com.ilovejsp.sql:
// DataSource, PooledConnection
public class ConnectionPool
{
private Vector pool;
private int size;
DataSource db;
public ConnectionPool()
{
pool = null;
size = 0;
db = new DataSource();
}
public void setSize(int value)
{
if(value > 1)
size = value;
}
public int getSize()
{
return size;
}
public synchronized void initPool()
throws Exception
{
try
{
for(int x = 0; x < size; x++)
{
Connection conn = db.getConnection();
if(conn != null)
{
PooledConnection pcon = new PooledConnection(conn);
addConnection(pcon);
}
}
}
catch(Exception e)
{
System.err.println(e.getMessage());
}
}
private void addConnection(PooledConnection pcon)
{
if(pool == null)
pool = new Vector(size);
pool.addElement(pcon);
}
public synchronized void releaseConnection(Connection conn)
{
int x = 0;
do
{
if(x >= pool.size())
break;
PooledConnection pcon = (PooledConnection)pool.elementAt(x);
if(pcon.getConnection() == conn)
{
System.err.println("Release Connection".concat(String.valueOf(String.valueOf(x))));
pcon.setInUse(false);
break;
}
x++;
}
while(true);
}
public synchronized Connection getConnection()
throws Exception
{
PooledConnection pcon = null;
for(int x = 0; x < pool.size(); x++)
{
pcon = (PooledConnection)pool.elementAt(x);
if(!pcon.inUse())
{
pcon.setInUse(true);
return pcon.getConnection();
}
}
try
{
Connection conn = db.getConnection();
pcon = new PooledConnection(conn);
pcon.setInUse(true);
pool.addElement(pcon);
}
catch(Exception e)
{
System.err.println("Exception error:".concat(String.valueOf(String.valueOf(e.getMessage()))));
}
return pcon.getConnection();
}
public synchronized void emptyPool()
{
for(int x = 0; x < pool.size(); x++)
{
System.err.println("Closing Jdbc Connection".concat(String.valueOf(String.valueOf(x))));
PooledConnection pcon = (PooledConnection)pool.elementAt(x);
if(!pcon.inUse())
{
pcon.close();
continue;
}
try
{
Thread.sleep(3000L);
pcon.close();
}
catch(Exception e)
{
System.out.println("Exception :".concat(String.valueOf(String.valueOf(e.getMessage()))));
}
}
db.close();
}
}
testpool.jsp内容如下:
<%@ page language="java" contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<HTML>
<HEAD>
<TITLE>系统数据信息</TITLE>
</HEAD>
<BODY>
<%ConnectionPool db=new ConnectionPool();
Connection conn=db.getConnection();
Statement stmt=conn.createStatement();
String sql1="select * from pg_database ";
ResultSet rs=stmt.executeQuery(sql1);
%>
<TABLE><TR><TD>系统数据库信息</TD></TR>
<TR><TD>
<%while(rs.next()) {
%>
<%=rs.getString(1)%>
<%}
rs.close();%>
</TR></TD>
<TABLE><TR><TD>系统字段信息</TD></TR>
<TR><TD>
<%String sql2="select * from pg_type";
rs=stmt.executeQuery(sql2);
while(rs.next()) {
%>
(<%=rs.getString(1)%>)
<%}
rs.close();
db.close();%>
</TR></TD>
</BODY>
</HTML>