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

怎样建立连接池

    来源: 互联网  发布时间:2015-11-06

    本文导语:  在频繁数据的存取中,一般是采用连接池 基本原理我是知道,但是具体该怎么做呢?不太清楚。 谁能帮帮我啊? | /**  * @author  Umesh  * @version 1.0  *  * Development Environment        :  ...

在频繁数据的存取中,一般是采用连接池
基本原理我是知道,但是具体该怎么做呢?不太清楚。

谁能帮帮我啊?

|
/**
 * @author  Umesh
 * @version 1.0
 *
 * Development Environment        :  Oracle9i JDeveloper
 * Name of the Application        :  ConnCacheBean.java
 * Creation/Modification History  :
 *
 *    Umesh      25-Nov-2001      Created
 *
 * Overview of Application        : This Bean Class is used by all the JSPs
 * to perform database interaction. This class uses JDBC to perform any DML/DDL
 * operations. The key concept illustarted here is Connection Caching.
 *
 * As JSPs execute in middle tier, getting an individual database connection
 * everytime for every user is an expensive operation. This is true especially
 * when number of users involved are large in numbers.
 *
 * With the help of Connection Caching, the overhead of instantiating a new physical
 * database connection can be easily overcome.
 *
 * This bean is implemented as a SingleTon Class meaning that there can be only
 * one instance of this bean per JVM. In the constructor of the bean, Connection
 * Cache is initialized and
 *
**/
package oracle.otnsamples.oracle9ijdbc.conncachesample;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import oracle.jdbc.pool.OracleDataSource;
import oracle.jdbc.pool.OracleConnectionPoolDataSource;
import oracle.jdbc.pool.OracleConnectionCacheImpl;
import java.util.Hashtable;
import java.util.Vector;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.naming.NameNotFoundException;
import javax.naming.Context;


public class ConnCacheBean  {

  // Connection Cache Variable
  private OracleConnectionCacheImpl m_ocacheimpl = null;
  // Data Source Variable
  private OracleConnectionPoolDataSource m_cpds = null;
  // Variable pointing to this instance
  private static ConnCacheBean m_thisInstance = null;

  /**
  * Private Constructor : This approach makes it easy to implement this class as
  * SingleTon Class.
  *
  * This method initializes Cache if not already initialized.
  **/
  private ConnCacheBean() throws Exception {
   if (m_ocacheimpl == null)
    initializeConnectionCache();
  }


  /**
  * Method which returns a single instance of this bean.
  **/
  public static ConnCacheBean getInstance() throws Exception {
    if ( m_thisInstance == null ) {
       m_thisInstance = new ConnCacheBean();
    }
    return m_thisInstance;
  }

|
servlet连接池的例子 
*************************************** 
import javax.servlet.* ; 
import javax.servlet.http.* ; 
import java.io.* ; 
import java.sql.* ; 
import java.util.Vector; 
import oracle.jdbc.driver.*; 
import java.util.Enumeration; 
import java.util.Properties; 
import com.unitech.connectionpool.* ;  


public class dbTest extends HttpServlet { 
//Initialize global variables 
public void init(ServletConfig config) throws ServletException { 
super.init(config);  


// 数据库连接:Connetcion conn = null ; 
Connection conn = null ; 
//数据库查询内容执行:Statement stment = null ; 
Statement stment = null ; 
// 数据库连接池的初始化 
DBConnectionManager connMgr = DBConnectionManager.getInstance();  

//初始化数据库连接池,并且获取数据库连接 
private void initDatabaseDriver () { 
conn = connMgr.getConnection("oracle"); 
if (conn == null) { 
System.out.println("数据库连接失败。"); 
return; 

try { 
stment = conn.createStatement(); 

catch (SQLException e) { 
e.printStackTrace() ; 

}  

//释放数据库连接 
private void freeConnectionPool() { 
connMgr.freeConnection("oracle", conn) ; 
}  

//获取记录集,并返回给VERTOR V 
public Vector getForumList() { 
String[] s = {"","","","",""} ;//与选取的列数相等。 
Vector v = new Vector() ; 
this.initDatabaseDriver(); 
try{ 
String queryStr = null ; 
queryStr = "SELECT BBS_ID,BBS_NAME,DESCRIPTION,MANAGER_ID, CREATE_DATE FROM BBS WHERE IS_SYSTEM='0' ORDER BY CREATE_DATE DESC" ; 
ResultSet rSet = stment.executeQuery(queryStr) ; 
while (rSet.next()) { 
s[0] = Integer.toString(rSet.getInt("BBS_ID")) ; 
s[1] = rSet.getString("BBS_NAME") ; 
s[2] = rSet.getString("DESCRIPTION") ; 
s[3] = rSet.getString("MANAGER_ID") ; 
Timestamp createdate = rSet.getTimestamp("CREATE_DATE") ; 
String tmp = createdate.toString() ; 
s[4] = tmp.substring(0,(tmp.length()-2)) ; 
v.addElement(s.clone()); 

rSet.close(); 
stment.close(); 
this.freeConnectionPool(); 

catch(Exception e) { 
try { 
stment.close(); 
this.freeConnectionPool(); 

catch(SQLException ee) { 
ee.printStackTrace(); 

e.printStackTrace() ; 

return v ; 
}  

//Process the HTTP Get request 
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  

PrintWriter out = new PrintWriter (response.getOutputStream()); 
response.setContentType("text/html"); 
out.println(""); 
out.println("The servlet has received a GET. This is the reply."); 
out.println(""); 
out.println("");  

// 将记录集循环输出到页面。 
Vector v = new Vector() ; 
v = this.getForumList() ; 
for (int i=0; i" 
+ ""+s[0]+"" 
+ ""+s[1]+"" 
+ ""+s[2]+"" 
+ ""+s[3]+"" 
+ ""+s[4]+""); 

out.println(""); 
out.close(); 



|
最简单的方法
下载一个连接池的bean
仔细研究两遍
大致是这个意思:
1、建立一个连接bean
2、生成一个唯一的连接池对象
3、调取连接bean
连接池是一个类中类

|
如果使用应用服务器,则一般的在服务器中建立数据源和连接池,方法参看该服务器文档

程序中使用jndi进行查找数据源,然后获取连接

    
 
 

您可能感兴趣的文章:

  • 建立长连接的SOCET通讯后,如何检查长连接的有效性,如何获知连接状态
  • 怎样在linux下建立一个PPP服务器,并在另一台机子上通过pppd来建立连接呀?
  • 建立一个ftp数据连接并传送或接受完毕一些数据后,能否不关闭此数据连接,下次接着用?
  • socket连接建立,收不到告警的情况?netstat结果如下
  • linux 刚建立的符号连接为什么会闪而且是红色的
  • 关于DBUS建立连接的问题
  • 服务器与客户端建立socket连接,如何获得端口号.谢谢
  • 200分求问j2me里如何建立socket连接?
  • ftp服务建立不了“数据连接“,怎么解决啊???????
  • 在线等待:用子线程与ORACLE数据库建立连接的问题。
  • 如何用DataSource建立数据库连接!
  • vim cscope建立连接的时候如何处理路径中的空格
  • 文件夹建立软连接遇到问题
  • Windows 下用什么与linux建立ssh连接?
  • 建立socket连接时,用IP地址不行
  • 如何建立一个连接数据库的应用?例如连接access、和sql sever.
  • Jbuilder中如何建立与SQL Server数据库的连接?(Jbuider高手请帮忙!)
  • sql数据库建立跨服务器连接的方法
  • 已和客户端连接建立的socket在客户端CTRL-C后怎么在服务器端捕捉这个错误?
  • 要建立到MSSQL的连接,Class.forName与URL应怎样写?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Redhat/Centos下rpmbuild命令从spec文件或者tar包建立rpm
  • 如何在Red Hat上建立FTP服务 并且建立FTP一个用户
  • 怎么建立.alias文件?在哪里建立这个文件?
  • 用windows客户机登陆Linux服务器不能建立建立文件夹????[img=http://forum.csdn.net/PointForum/ui/scrip
  • 浙ICP备11055608号-3 iis7站长之家
  • 很多服务都吧监听同时建立在特定ip和广播ip上,但是使用ssh转发时,发现没法建转发建立在广播ip上
  • 只给一个目录路径,怎样再在其下建立一个新的目录(给定目录名),然后再在其下建立一个新的文件(给定文件名)?
  • unix下获得文件的建立时间
  • linux系统中建立一个用户专门用来修改系统时间怎么做?
  • 哪个DOS命令可以建立一个空文件?
  • 开发板上建立一个nfs服务器
  • 用户ID的建立
  • 建立用户的问题
  • 服务器8G内存,怎样建立swap分区?
  • 如何建立虚拟主机
  • 怎么样在 dos 系统下 批量的建立目录?
  • 请问如何建立“目录的快捷”档?
  • 如何建立批处理?
  • 新手:unix下建立文件的命令?
  • 在pxa255建立linux2.4的系统,需要哪些补丁啊?
  • Linux用什么命令建立一个.cpp文件?


  • 站内导航:


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

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

    浙ICP备11055608号-3