当前位置:  技术问答>java相关

怎样使用连接池?

    来源: 互联网  发布时间:2015-05-28

    本文导语:  现在是用jsp作了个web形式的操作界面,但是怕今后操作终端增加很多后会干扰主业务对数据库的操作(用的是sybase12),想使用连接池,因为我是jsp新手,所以很想找点具体资料,大家有什么好推荐的,恳请指点。我...

现在是用jsp作了个web形式的操作界面,但是怕今后操作终端增加很多后会干扰主业务对数据库的操作(用的是sybase12),想使用连接池,因为我是jsp新手,所以很想找点具体资料,大家有什么好推荐的,恳请指点。我用的是jrun3.0,里面的jdbc连接有个pool选项,是什么作用,是jrun自己的连接池么?

|

  
标题     JDBC Connection Pool Example    skyyoung(收藏)  
  
关键字     Connection Pool 
  


 

/*
 * Copyright (c) 1998 by Gefion software.
 *
 * Permission to use, copy, and distribute this software for
 * NON-COMMERCIAL purposes and without fee is hereby granted
 * provided that this copyright notice appears in all copies.
 *
 */

import java.io.*;
import java.sql.*;
import java.util.*;
import java.util.Date;

/**
 * This class is a Singleton that provides access to one or many
 * connection pools defined in a Property file. A client gets
 * access to the single instance through the static getInstance()
 * method and can then check-out and check-in connections from a pool.
 * When the client shuts down it should call the release() method
 * to close all open connections and do other clean up.
 */
public class DBConnectionManager {
    static private DBConnectionManager instance;       // The single instance
    static private int clients;

    private Vector drivers = new Vector();
    private PrintWriter log;
    private Hashtable pools = new Hashtable();
    
    /**
     * Returns the single instance, creating one if it's the
     * first time this method is called.
     *
     * @return DBConnectionManager The single instance.
     */
    static synchronized public DBConnectionManager getInstance() {
        if (instance == null) {
            instance = new DBConnectionManager();
        }
        clients++;
        return instance;
    }
    
    /**
     * A private constructor since this is a Singleton
     */
    private DBConnectionManager() {
        init();
    }
    
    /**
     * Returns a connection to the named pool.
     *
     * @param name The pool name as defined in the properties file
     * @param con The Connection
     */
    public void freeConnection(String name, Connection con) {
        DBConnectionPool pool = (DBConnectionPool) pools.get(name);
        if (pool != null) {
            pool.freeConnection(con);
        }
    }
        
    /**
     * Returns an open connection. If no one is available, and the max
     * number of connections has not been reached, a new connection is
     * created.
     *
     * @param name The pool name as defined in the properties file
     * @return Connection The connection or null
     */
    public java.sql.Connection getConnection(String name) {
        DBConnectionPool pool = (DBConnectionPool) pools.get(name);
        if (pool != null) {
            return pool.getConnection();
        }
        return null;
    }
    
    /**
     * Returns an open connection. If no one is available, and the max
     * number of connections has not been reached, a new connection is
     * created. If the max number has been reached, waits until one
     * is available or the specified time has elapsed.
     *
     * @param name The pool name as defined in the properties file
     * @param time The number of milliseconds to wait
     * @return Connection The connection or null
     */
    public java.sql.Connection getConnection(String name, long time) {
        DBConnectionPool pool = (DBConnectionPool) pools.get(name);
        if (pool != null) {
            return pool.getConnection(time);
        }
        return null;
    }
    
    /**
     * Closes all open connections and deregisters all drivers.
     */
    public synchronized void release() {
        // Wait until called by the last client
        if (--clients != 0) {
            return;
        }
        
        Enumeration allPools = pools.elements();
        while (allPools.hasMoreElements()) {
            DBConnectionPool pool = (DBConnectionPool) allPools.nextElement();
            pool.release();
        }
        Enumeration allDrivers = drivers.elements();
        while (allDrivers.hasMoreElements()) {
            Driver driver = (Driver) allDrivers.nextElement();
            try {
                DriverManager.deregisterDriver(driver);
                log("Deregistered JDBC driver " + driver.getClass().getName());
            }
            catch (SQLException e) {
                log(e, "Can't deregister JDBC driver: " + driver.getClass().getName());
            }
        }
    }

|
这个连接池还真是一般般

    
 
 

您可能感兴趣的文章:

  • 在XP下使用VMWare安装了Linux AS 5.6之后,使用FTP工具可以远程连接Linux,而在cmd命令行中却连接不上,什么原因 ?
  • 在linux下可以使用dao方式连接数据库吗?可以连接musql吗?回答就给分!急
  • 一个连接池使用的问题:这种写法没用上连接池?
  • 使用连接池时能否使用预编译的PrepareStatement或CallableStatement,200分求教
  • 我直接在LINUX 系统命令符下使用有乱码?而在WINDOWS下,使用PUTTY 连接却很正常?
  • 几台机器做lvs,使用100M 网线连接,文件系统使用NFS共享,读写速度会出现问题吗?
  • 见鬼了,为什么死活不能使用静态连接???
  • 关于使用数据库连接的问题。
  • 请教数据库连接池的使用....
  • 使用什么命令查看系统的最大连接数?
  • 大虾帮忙,怎样用JDBC-ODBC连接SQL2000并使用呀?
  • 在Linux下同时使用5000个TCP连接的问题
  • Oracle中SQL语句连接字符串的符号使用介绍
  • 新手使用SecureCRT连接linux的问题
  • 急!无法使用SecureCRT连接openssh
  • 急,jsp如何使用jdbc连接DB2,解决就结贴
  • windows vista如何使用xmanager连接ubuntu 7.10
  • 使用X manager连接oracle数据库的步骤
  • 如何使用JSP 连接SQLSERVER数据库,请不吝赐教!(在线等,急救!)
  • 请问:在UINX如何编写、使用动态连接库???
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • Python不使用print而直接输出二进制字符串
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • Office 2010 Module模式下使用VBA Addressof
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • c#中SAPI使用总结——SpVoice的使用方法
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍
  • 使用了QWidget的程序,如何使用后台程序启动它?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • 共享内存一般是怎么使用的,是同消息队列配合使用么
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • Jsp可否使用带有GUI的JavaBean,如何使用?
  • c/c++预处理命令预#,##使用介绍
  • asp程序使用的access在Linux下如何使用!
  • 在div中使用css让文字底部对齐的方法
  • 新装的Linux使用root用户不能使用FTP?
  • Python namedtuple(命名元组)使用实例
  • LINUX下使用Eclipse,如何使用交叉编译器?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3