JNDI-数据来源(Data Source)与连接池(Connection Pool)

 

在介绍数据来源和连接池之前,首先来介绍一下Java程序访问数据库的最基本的方式(JDBC1.0采用的方式)

     java语言中,JDBCjava应用程序与数据库沟通的桥梁,JDBC实际上是一种用于执行SQLJava API,可以让你在数据库与Java应用程序之间来去自如。

     一般来说,Java应用程序访问数据库的过程如下图所示:

(1)       加载数据库驱动程序   

Class.forName(“驱动程序”).newInstance();

在加载驱动程序之后,驱动程序一般都会建立一个Driver对象

(2)       通过JDBC建立数据库连接

Connection con=DriverManager.getConnection(url,user,password);

(3)       访问数据库,执行SQL语句

建立陈述式对象Statement stmt=con.createStatement();

使用陈述式对象来执行SQL语句 executeQuery()executeUpdate()execute();

(4)       断开数据库连接

 

     但是采用上述方式,很消耗大量的时间与资源,并且可能造成内存泄漏的隐患,具体不好的方面网上有很多描述

 

因此现今多采用连接池方式:

1)基本概念及原理

由上面的分析可以看出,问题的根源就在于对数据库连接资源的低效管理。我们知道,

对于共享资源,有一个很著名的设计模式:资源池(Resource Pool)。该模式正是为了解决资源的频繁分配﹑释放所造成的问题。为解决上述问题,可以采用数据库连接池技术。数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量﹑使用情况,为系统开发﹑测试及性能调整提供依据。连接池的基本工作原理见下图2

下面来介绍一下JNDI、数据来源与连接池的关系

Ø         数据来源:JDBC2.0提供数据来源(Data Source)接口的目的:

1)        减少你将一些数据库连接信息写死在你的JSP程序代码之内;

2)        Connection的控管交由Container去控制,我们不用烦恼Connection管理上的问题。

 

Ø         连接池:上面提到的数据来源就是负责提供连接池的功用,可以重复使用连接,而不是对每个请求都重新连接一次。而我们所需要做的就是从数据来源中的连接池取的Connection,语句Connection的管理交由数据来源处理。

 

Ø         JNDIJava Naming and Directory Interface)主要提供应用程序所需资源上命名与目录的服务。在J2EE环境中,JNDI扮演了一个很重要的角色,它提供了一个接口让用户在不知道资源所在的位置的情形下,取得该资源服务。

 

一个Data Source对象代表了一个真正的数据来源,当一个Data Source对象注册到名字服务中,应用程序就可以通过名字服务获得Data Source对象,并用它来产生一个与Data Source代表的数据源之间的连接。

关于数据源的信息和如何来定位数据源,例如数据库服务器的名字,在哪台机器上,端口号等等,都包含在DataSource对象的属性里面去了。这样,对应用程序的设计来说是更方便了,因为并不需要硬性的把驱动的名字写死到程序里面去。通常驱动名字中都包含了驱动提供商的名字,而在DriverManager类中通常是这么做的。如果数据源要移植到另一个数据库驱动中,代码也很容易做修改。所需要做的修改只是更改DataSource的相关的属性。而使用DataSource对象的代码不需要做任何改动。

 由系统管理员或者有相应权限的人来配置DataSource对象。配置DataSource,包括设定DataSource的属性,然后将它注册到JNDI名字服务中去。在注册DataSource对象的的过程中,系统管理员需要把DataSource对象和一个逻辑名字关联起来。名字可以是任意的,通常取成能代表数据源并且容易记住的名字。在下面的例子中,名字起为:InventoryDB,按照惯例,逻辑名字通常都在jdbc的子上下文中。这样,逻辑名字的全名就是:jdbc/ InventoryDB

一旦配置好了数据源对象,应用程序设计者就可以用它来产生一个与数据源的连接。下面的代码片段示例了如何用JNDI上下文获得一个数据源对象,然后如何用数据源对象产生一个与数据源的连接。开始的两行用的是JNDI API,第三行用的才是JDBCAPI

 Context ctx = new InitialContext();    //新建JNDI上下文对象

DataSource ds = (DataSource)ctx.lookup("jdbc/InventoryDB");   //JNDI上下文对象获得一个数据源

Connection con = ds.getConnection("myPassword", "myUserName");  //用数据源对象产生一个与数据源的连接

在一个基本的DataSource实现中,DataSource.getConnection方法返回的Connection对象和用DriverManager.getConnection方法返回的Connection对象是一样的。因为DataSource提供的方便性,我们推荐使用DataSource对象来得到一个Connection对象。我们希望所以的基于JDBC2.0技术的数据库驱动都包含一个基本的DataSource的实现,这样就可以在应用程序中很容易的使用它。

 

资料:http://www.chinaunix.net/jh/26/30421.html

 

 

tomcat5.5下配置连接池:

在网上查了很多资料,在server.xmlcontext.xml配了很多次,一直没有成功,反正就是报这样那样的错误:后来看了篇帖子,在tomcat admin下面配置居然成功了,哈哈

首先,进入Tomcat Admin 配置连接池

如果没有安装Tomcat Admin 的话,

第一步:要去http://tomcat.apache.org/download-55.cgi 下载admin的压缩包,并解压。

第二步:将解压目录下的conf/Catalina/localhost/admin.xmladmin.xml 文件拷贝到tomcat安装目录下的    /conf/Catalina/localhost的文件夹中。

第三步:将解压目录下的server/webapps中的admin整个文件夹拷贝到tomcat安装目录下的/server/webapps 文件夹中。

第四步:在Tomcat 5.5/conf/中的tomcat-users.xml 文件。在</tomcat-user>最后一行之前,加入下列一行<user username="admin" password="tomcat" roles="admin, manager"/>注意username/password可以是你喜欢的任意组合,但roles=admin 不可随意改动。

第五步:进入http://localhost:端口号/admin ,输入用户名以及密码进入操作页面进行配置自己的连接池。

这个方式又简单又好,推荐!!

资料: http://www.e-sea.cn/Channel5/tomcat55-LianJieChiPeiZhi.html
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值