[img][/img]原理:
在DataSource中事先建立多个数据库连接,保存在数据库连接池中。当程序访问数据库时,只用从连接池中取空闲状态的数据库连接即可,访问结束,销毁资源,数据库连接重新回到连接池,这与每次去直接访问数据库相比,会节省大量时间和资源。
JNDI( Java Naming and Directory Interface ),是Java平台的一个标准扩展,提供了一组接口、类和关于命名空间的概念。如同其它很多Java技术一样,JDNI是provider-based的技术,暴露了一个 API和一个服务供应接口(SPI)。这意味着任何基于名字的技术都能通过JNDI而提供服务,只要JNDI支持这项技术。JNDI目前所支持的技术包括 LDAP、CORBA Common Object Service(COS)名字服务、RMI、NDS、DNS、Windows注册表等等。很多J2EE技术,包括EJB都依靠JNDI来组织和定位实体。可以把它理解为一种将对象和名字捆绑的技术,对象工厂负责生产出对象,这些对象都和唯一的名字绑在一起,外部资源可以通过名字获得某对象的引用。
在javax.naming的包包中提供Context接口,提供了两个很好用的方法:
<1> void bind( String name , Object object )
将名称绑定到对象。所有中间上下文和目标上下文(由该名称最终原子组件以外的其他所有组件指定)都必须已经存在。
<2>Object lookup( String name )
检索指定的对象。如果 name为空,则返回此上下文的一个新实例(该实例表示与此上下文相同的命名上下文,但其环境可以独立地进行修改,而且可以并发访问)。
外部资源访问对象工厂中的工程图:
例:
=================将以下代码段添加到server.xml中的<Host>中============
<!-- configure DataSource. Add the following code into server.xml -->
<Context path="/bookstore" docBase="bookstore" debug="0"
reloadable="true" >
<!-- 数据源名称 -->
<Resource name="jdbc/BookDB"
auth="Container"
type="javax.sql.DataSource" />
<ResourceParams name="jdbc/BookDB">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<!-- Maximum number of dB connections in pool. Make sure you
configure your mysqld max_connections large enough to handle
all of your db connections. Set to 0 for no limit.
-->
<!-- 活动状态最大连接数 -->
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<!-- Maximum number of idle dB connections to retain in pool.
Set to 0 for no limit.
-->
<!-- 空闲状态数据库连接最大数 -->
<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>
<!-- Maximum time to wait for a dB connection to become available
in ms, in this example 10 seconds. An Exception is thrown if
this timeout is exceeded. Set to -1 to wait indefinitely.
Maximum time to wait for a dB connection to become available
in ms, in this example 10 seconds. An Exception is thrown if
this timeout is exceeded. Set to -1 to wait indefinitely.
-->
<!-- 数据库处于空闲状态的最长时间 -->
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>
<!-- MySQL dB username and password for dB connections -->
<!-- 指定连接数据库的用户名及密码 -->
<parameter>
<name>username</name>
<value>dbuser</value>
</parameter>
<parameter>
<name>password</name>
<value>1234</value>
</parameter>
<!-- Class name for mm.mysql JDBC driver -->
<!-- 指定JDBC驱动 -->
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<!-- The JDBC connection url for connecting to your MySQL dB.
The autoReconnect=true argument to the url makes sure that the
mm.mysql JDBC Driver will automatically reconnect if mysqld closed the
connection. mysqld by default closes idle connections after 8 hours.
-->
<!-- 指定连接数据库的URL -->
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost:3306/BookDB?autoReconnect=true</value>
</parameter>
</ResourceParams>
</Context>
运行机制:
- 大小: 10.4 KB
分享到:
相关推荐
### Tomcat中JNDI原理详解 #### 一、引言 Java Naming and Directory Interface (JNDI) 是Java平台中用于访问命名和目录服务的API。它为开发者提供了访问各种命名和目录服务(如DNS、LDAP等)的统一接口。在Tomcat...
### JNDI配置原理详解 #### 一、引言 JNDI(Java Naming and Directory Interface)是Java平台的一部分,它允许开发人员访问命名服务,从而可以存储和检索应用程序组件名称和服务之间的映射关系。本文将详细介绍...
jndi入门学习资料,介绍jndi基本原理,安装和使用,基本配置
1.1 Apache Tomcat各版本 1.2 Apache Tomcat Versions 1.3 Java事务处理总结 1.4 JavaBean中使用JDBC...1.22 JNDI配置原理详解 1.23 JSF+Seam框架学习心得 1.24 java jdbc驱动的四种类型 1.25 resource-ref元素
### Java JNDI总结 #### 一、JNDI简介 **JNDI**(Java Naming and Directory Interface)是Java平台中的一个API,用于访问命名和目录服务,这些服务可以存储对象引用及其名称。JNDI的主要作用在于提供了一种在...
**JNDI 原理** 2.1 上下文(Context)介绍 在JNDI中,上下文(Context)是核心概念。一个上下文可以看作是命名空间的一个部分,其中包含了一些名称到对象的映射。Context对象提供了对这些映射的操作,包括查找、绑定...
通过查看源代码和运行示例,可以深入理解JNDI的工作原理。 10. **学习资料**:提供的文档,如`java的JNDI 技术介绍及应用.docx`和`jndi step by step - aurawing - 博客园.pdf`,可能包含JNDI的详细教程和实践指南...
**JNDI工作原理** JNDI主要由两部分组成:Name Space(命名空间)和Naming Context(命名上下文)。Name Space是一个逻辑结构,用于存储命名对象;Naming Context则是一组Name Space的集合,可以包含子Context。应用...
在这个压缩包文件"JNDI_Demo_0915"中,很可能包含了上述操作的代码示例,帮助开发者理解JNDI的工作原理和使用方式。通过阅读和学习这个示例,你可以掌握如何在实际项目中利用JNDI来管理和查找资源,提高代码的可维护...
下面我们将深入探讨JNDI数据库查询的基本概念、工作原理以及如何在MyEclipse环境中实现一个简单的查询示例。 **1. JNDI基础知识** JNDI的核心概念包括命名空间、上下文(Context)和查找操作。命名空间是一个组织...
在Java应用开发中,JNDI(Java Naming and Directory Interface)是一种标准接口,用于查找和管理...通过理解JNDI的工作原理以及如何在Spring中配置和使用JNDI数据源,开发者能够更好地实现高效、安全的Java应用开发。
### JNDI配置在Tomcat中的详细介绍 JNDI(Java Naming and Directory Interface)是Java平台的一个标准接口,用于访问命名和...开发者应熟练掌握JNDI的基本原理和配置技巧,以便在实际开发中灵活运用这一强大的工具。
JNDI(Java Naming and Directory Interface)数据源是Java应用程序中用于管理数据库连接的一种机制。它主要用于企业级应用服务器,如Tomcat、JBoss、WebLogic等,通过JNDI服务,开发者可以方便地查找和获取数据库...
通过理解JNDI的基本原理和配置方法,开发者能够更灵活地管理和使用数据库资源。提供的压缩包文件可能包含了详细步骤、示例代码或者配置模板,可以帮助你更好地理解和实践JNDI连接数据库的过程。
"JNDI-Injection-Exploit-1.0-SNAPSHOT-all.zip"提供的资源可以帮助我们了解这种攻击的工作原理,以及如何通过测试和编码实践来防止它。通过学习和理解这个工具包,开发人员和安全专家能够增强他们的系统安全性,...
**数据链接池的工作原理**: 1. **初始化**:在应用程序启动时,数据链接池会预先创建一定数量的数据库连接,并将它们存储起来。 2. **请求连接**:当应用程序需要与数据库交互时,它会从数据链接池中请求一个连接,...
1. **JNDI的工作原理**:JNDI通过提供统一的API,隐藏了不同命名和目录服务的实现细节。它允许开发者注册和查找对象,这些对象可以是任何实现了Java对象的类。 2. **JNDI的组件**:主要包括Naming Manager、Context...
下面将详细阐述JNDI的工作原理、使用场景以及如何通过JNDI来获取数据库连接和数据源。 JNDI的主要功能包括查找、绑定、解绑和重新绑定命名空间中的对象。命名空间可以理解为一个全局的、有序的对象存储区域,每个...
- `examples` 目录可能包含了一些使用JNDI的示例代码,这对于学习和理解JNDI的工作原理非常有帮助。 - `doc` 目录通常存放API文档,如Javadoc,提供了详细的类和方法说明,是开发过程中查阅API的重要参考资料。 - `...
#### 三、JNDI的工作原理 1. **JNDI架构**:JNDI的核心概念包括**JNDI管理器**、**服务提供者接口(SPI)**和**应用程序接口(API)**。其中,**JNDI管理器**负责管理命名空间和目录信息;**SPI**定义了服务提供者必须...