科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件如何使用Java模拟.NET的连接池

如何使用Java模拟.NET的连接池

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

.NET的ADO.NET的本身包含连接池功能,而java是在第三方开发包中提高的连接池功能因此,需要去下载第三方的连接池包,但是java的连接池一般都是在EJB或者B/S系统中使用的

作者:中国IT实验室 来源:中国IT实验室 2007年8月23日

关键字: 连接池 java

  • 评论
  • 分享微博
  • 分享邮件

作者 : manboo

   .NET的ADO.NET的本身包含连接池功能,而java是在第三方开发包中提高的连接池功能因此,需要去下载第三方的连接池包,但是java的连接池一般都是在EJB或者B/S系统中使用的(虽然也有C/S下的连接池如Borland 在Jbuilder中提供的),在一个服务性系统中使用起来不是很方便.再说使用第三方的开发包也不利于维护.因此决定自己写一个连接池的开发包.此连接池中主要解决的是提高数据库访问性能,并且尽可能减少连接数目.

说明:

   此连接池有三个类和一个接口组成,三个类分别是:

DBConnectionPool 数据库连接池,用户可以通过此类来使用连接池的功能.

PoolConnection 一个实现了java.sql.Connection的warp类,用来和数据库进行通讯.

theOnClose 实现了接口OnConnectionClose的一个类用还处理释放数据库连接的是动作决定是关闭数据库还是返回池中

接口 :

  OnConnectionClose:此接口是一个声明,因为本人很不喜欢java的事件机制因此,我经常自己写一些接口来模拟时间,没有java的事件机制那么强大也没有那么复杂.但是效率要比java的事件机制要高那么一点点(笑:).

本来要上传这几个小类的UML图的但是我一点IE就死,所以算了.就只上传代码.还望方家指正.

代码:

package DBTools;

/**
* <p>T数据库连接池工具 </p>
* <p>模拟.NET的连接池,俺一直以为.NET比java优秀 </p>
* <p>Copyright: 可以随便使用,如果有改进最好通知俺</p>
* <p>Company:自己作品 </p>
* @author董平雷
* @version 1.0
*/
import java.sql.*;
import java.util.*;
import java.io.*;

interface OnConnectionClose {
 public void Action(PoolConnection sender);

}

public class DBConnectionPool {

 private static Vector pConnectionVector = new Vector();
 // private static int Count=0;
 private static int minCount = 1;
 private static String URL = "";
 private static String User = "";
 private static String Password = "";
 private static String DriverName="";
synchronized public static void setMinCount(int Value) {
  minCount = Value;
 }

synchronized public static int getMinCount() {
  return minCount;
 }

synchronized public static int getCout() {
  return pConnectionVector.size();
 }

synchronized public static Connection getConnection() throws SQLException {
  PoolConnection pConnection = null;
  // int aCount=pConnectionVector.size();

  for (int I = 0; I < pConnectionVector.size(); i++) {
   Object oCon = pConnectionVector.elementAt(i);
   if (oCon instanceof PoolConnection) {
    PoolConnection aCon = (PoolConnection) oCon;
    if (!aCon.isUsed()) {
     pConnection = aCon;
     break;
    }

   }

  }
  if (pConnection == null) {
   pConnection = getNewConnection();
   pConnectionVector.add(pConnection);
  }
  return pConnection;

 }

 private static PoolConnection getNewConnection() throws SQLException {
  try
  {
    Class.forName( DriverName);
  }catch(ClassNotFoundException ex)
  {
   ex.printStackTrace();
  }
  PoolConnection con = new PoolConnection(URL, User, Password);
  con.setOnClose(new theOnClose(pConnectionVector));
  return con;
 }

synchronized public static void SetJDBC(String url, String user, String password) {
  URL = url;
  User = user;
  Password = password;

 }

synchronized public static void setURL(String url) {
  URL = url;

 }

synchronized public static String getUrl() {
  return URL;

 }
synchronized public static void setUser(String user)
 {
   User=user;
 }
synchronized public static String getUser()
 {
  return User;
 }
synchronized public static void setPassword(String password)
 {
  Password=password;
 }
synchronized public static String getPassword()
 {
  return Password;
 }

synchronized public static void setDriverName(String dName)
{
  DriverName=dName;

}
synchronized public static String getDriverName()
 {
  return DriverName;
 }
}  

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章