配置数据库连接池使用之JNDI的方式

转载 2018年04月17日 10:35:18

一、JNDI:

JNDI就是(java Naming and Directory Inteface)java名称目录接口。

JNDI的作用:就是将资源引入到服务器中。可以将JNDI当成一个仓库。将Java对象放入到JNDI中去。

二、数据源的由来:

在java开发中,使用JDBC操作数据库的几个步骤:

1.使用Class.forName(类的全路径名称):用于加载数据库驱动程序。

2.获得数据库的Connection连接对象。DriverManager.getConnection()。

3.操作数据库:查询数据库,或者更新数据库内容,

4.关闭数据库连接:使用close方法。

注意:每次获取一个数据库连接的要经过这4个步骤,但是其中【1】,【2】,【4】是所有操作数据库的公共操作,只有【3】是操作数据库的不同步骤。并且获得数据库的connection对象和关闭数据库的连接都是要一定的时间。造成性能较差。

如果我们一开始就有已经创建好了多个connection对象,放在一个公共地方,当有一个连接数据库的请求,就从这个公共地方中取出一个connection,操作数据库,操作完成数据库,不关闭connection,而是放入到公共仓库中去,这就出现了数据库连接池的东西,就是存放多个Connection对象的地方。

三、使用JNDI配置数据库的连接池:有两种方式:(全局的JNDI配置和非全局的JNDI配置)

(一)非全局的JNDI配置:他只针对某一个Web项目的数据源的配置

1.导入要链接数据库的jar包文件。

例如sqlserver导入:sqljdbc4.jar包

oracle导入:ojdbc14.jar包

mySQL导入:mysql-connector-java-5.0.8.jar包

2.在JNDI中配置数据库的连接池:

在WEB项目中的的META-INF中创建一个context.xml文件。用于设置数据库的连接池信息

[html] view plain copy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <Context>  
  3. <!--       其中Resource标签就是配置资源,他的属性值如下:  
  4.   |- name:表示以后要查找的名称。通过此名称可以找到DataSource,此名称任意更换,但是程序中最终要查找的就是此名称,  
  5.            为了不与其他的名称混淆,所以使用jdbc/oracle,现在配置的是一个jdbc的关于oracle的命名服务。  
  6.   |- auth:由容器进行授权及管理,指的用户名和密码是否可以在容器上生效,可以使用Container  
  7.   |- type:此名称所代表的类型,现在为javax.sql.DataSource(不用变)  
  8.   |- maxActive:表示一个数据库在此服务器上所能打开的最大连接数  
  9.   |- maxIdle:表示一个数据库在此服务器上维持的最小连接数  
  10.   |- maxWait:最大等待时间。10000毫秒  
  11.   |- username:数据库连接的用户名  
  12.   |- password:数据库连接的密码  
  13.   |- driverClassName:数据库连接的驱动程序  
  14.   |- url:数据库连接的地址  
  15. -->  
  16. <!--配置Oracle数据库的JNDI数据源-->  
  17. <Resource   
  18.         name="jdbc/oracle"  
  19.         auth="Container"   
  20.         type="javax.sql.DataSource"  
  21.         maxActive="100"   
  22.         maxIdle="30"   
  23.         maxWait="10000"  
  24.         username="lead_oams"   
  25.         password="p"  
  26.         driverClassName="oracle.jdbc.driver.OracleDriver"  
  27.         url="jdbc:oracle:thin:@192.168.1.229:1521:lead"/>  
  28.   
  29. <!--配置MySQL数据库的JNDI数据源-->  
  30. <Resource   
  31.         name="jdbc/mysql"  
  32.         auth="Container"   
  33.         type="javax.sql.DataSource"  
  34.         maxActive="100"   
  35.         maxIdle="30"   
  36.         maxWait="10000"  
  37.         username="root"   
  38.         password="root"  
  39.         driverClassName="com.mysql.jdbc.Driver"  
  40.         url="jdbc:mysql://192.168.1.144:3306/leadtest?useUnicode=true&amp;characterEncoding=utf-8"/>  
  41.   
  42. <!--配置SQLServer数据库的JNDI数据源-->  
  43. <Resource   
  44.         name="jdbc/sqlserver"  
  45.         auth="Container"   
  46.         type="javax.sql.DataSource"  
  47.         maxActive="100"   
  48.         maxIdle="30"   
  49.         maxWait="10000"  
  50.         username="sa"   
  51.         password="123456"  
  52.         driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"  
  53.         url="jdbc:sqlserver://192.168.1.51:1433;DatabaseName=demo"/>  
  54. </Context>  
3.在web.xml文件中进行配置(可有可无):如果有的话:
[html] view plain copy
  1. <resource-ref>  
  2.     <description>my DB Connection</description>  
  3.     <res-ref-name><span style="font-family: Arial, Helvetica, sans-serif;">jdbc/sqlserver</span><span style="font-family: Arial, Helvetica, sans-serif;"></res-ref-name>这个名字要与context.xml中的name一样</span>  
  4.     <res-type>javax.sql.DataSource</res-type>  
  5.     <res-auth>Container</res-auth>  
  6. </resource-ref>  
4.如果使用Spring的情况下:在applicationContext.xml或者自己的Spring的配置文件中:导入JNDI的配置信息

//获得content.xml中JNDI配置的数据库的连接池信息。jndi-name必须与JNDI中的name值一样

<jee:jndi-lookup id="dataSource"  jndi-name="jdbc/sqlserver" />

//使用JdbcTemplate操作数据库。

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource" />
    </bean>

在java文件中使用IOC得到jdbcTemplate对象。最后使用JdbcTemplate操作数据库

5.如果不使用Spring的话:可以在java文件中使用:

Context initContext = new InitialContext();

Context envContext  = (Context)initContext.lookup("java:/comp/env");//固定,不需要修改
 DataSource ds = (DataSource)envContext.lookup(jdbc/sqlserver);

(二)全局的JNDI:

1.在tomcat的安装目录下的conf下的server.xml文件中的GlobalNamingResources标签下加入(一局部JNDI在context.xml文件中的resource配

置信息)。

2.在Web项目中的META-INF下的context中配置

//global中的名字要与server.xml中的名称一样,而这里的name表示当前要使用名称。

<ResourceLink name="jdbc/sqlserver" global="jdbc/sqlserver" type="javax.sql.DataSource"/>

3.剩下的和局部JNDI一样,及第3,第4,第5直接使用就可以了,也就是将局部中的第2换成全局中的【1】,【2】.

JNDI写法tomcat配置

  • 2014年07月21日 09:39
  • 2KB
  • 下载

Tomcat5配置MysqlJDBC数据库连接池(JNDI方式)

  • 2012年06月08日 13:37
  • 42KB
  • 下载

TOMCAT中数据库连接池的配置(JNDI方式)

TOMCAT中数据库连接池的配置  1.将数据库驱动程序的JAR文件放在Tomcat的 common/lib 中; 2.在server.xml中设置数据源,以MySQL数据库为例,如下: 在 节...
  • hyz301
  • hyz301
  • 2017-03-20 18:52:57
  • 191

数据连接池——JNDI

数据库连接有很多中方式,JDBC数据库的连接方式,前边我们已经介绍过了,而开发中我们经常使用的是DataBaseConnectionPool(数据库连接池,DBCP)。数据库连接池到底是什么?它比jd...
  • liujiahan629629
  • liujiahan629629
  • 2014-03-05 21:12:34
  • 11321

JNDI创建动态数据库连接池原理

利用JNDI创建数据库连接池可以使我们很轻松的连接数据库减少连接代码的数量,使连接更稳定,在这种连接情况下速度相对较快. 1)连接池原理一主要通过启动JBOSS时调用配置文件mssql-ds.xml...
  • ahhsxy
  • ahhsxy
  • 2011-12-24 22:05:56
  • 807

Spring的JNDI数据源连接池配置学习笔记

Spring的JNDI数据源连接池
  • u013960139
  • u013960139
  • 2016-07-05 11:24:42
  • 825

在tomcat下context.xml中配置各种数据库连接池(JNDI)

1.   首先,需要为数据源配置一个JNDI资源。我们的数据源JNDI资源应该定义在context元素中。在tomcat6版本中,context元素已经从server.xml文件中独立出来了,放在一个...
  • dangelasir_
  • dangelasir_
  • 2016-09-10 15:38:32
  • 2445

配置数据库连接池之JNDI的方式,tomcat

一、JNDI: JNDI就是(Java Naming and Directory Inteface)java名称目录接口。 JNDI的作用:就是将资源引入到服务器中。可以将JNDI当成一个仓库...
  • seapeak007
  • seapeak007
  • 2016-11-24 15:30:09
  • 679

JNDI的数据库连接池 pdf

  • 2010年05月29日 16:28
  • 155KB
  • 下载

数据库连接池的集中配置方式

  • 2010年04月01日 16:56
  • 911KB
  • 下载
收藏助手
不良信息举报
您举报文章:配置数据库连接池使用之JNDI的方式
举报原因:
原因补充:

(最多只允许输入30个字)