1.理解JNDI
1.1 JNDI全称:Java Naming and Directory Interface,Java命名和目录接口。
- JNDI:是一个有关应用序设计的 API 为开发人员提供了查找和访问各种命名和目录服务的通用、 统一的接口;
- 作用:通过名称将资源与服务进行关联。
1.2 JNDI的作用与优点
-
在应用与Java对象或资源之间建立松耦合的逻辑关联,简化应用对于资源的配置及维护工作;
-
可以在更大范围、不同应用之间共享资源;
1.3 用法
- 在 Tomcat 中发布一条信息供所有的 Web 应用程序使用;
1. 在 Tomcat 中发布一条信息,修改context . xml 文件,代码如下:
```
<Context>
<Environment name="tjndi" value="hello JNDI" type="java.lang.String" />
</Context>
```
>< EnviTonment >元素用于配置命名的值, 所配置的值作为环境条目资源, 对整个 Web 应用可见。它包含的属性:name、type、value;
-
name:环境条目的名称,相对于 java:comp/env 的名称;
-
type: 环境条目的 Java 类名的全称;
-
value: 通过JNDI context 请求时,返回给应用的参数值,该值必须转换成 type 属性定义Java 类型;
2. 编写 JSP 代码 , 通过 JNDI 访问环境条目,代码如下:
<body>
<%@ page import="javax.naming.*" %>
<%
//javax.naming.Context提供了查找JNDI Resource的接口
Context ctx = new InitialContext(); //初始化Context对象
//java:comp/env/为前缀
String testjndi = (String) ctx.lookup("java:comp/env/tjndi"); //调用lookup()方法
out.print("test jndi:" + testjndi);
%>
</body>
- java. naming包下的Context 接口表示命名上下文,它由一组名称到对象的绑定组成。
- InitialContext是 Context接口的实现类;
- Object lookup(String name) 方法根据名称检索指定对象,
- 为了避免 JNDI命名空间中的资源名称互相冲突. 并且避免可移植性问题 Java EE 应用程序中的所有名称应该以字串“java:comp/env”作为前缀;在上面的示例中:前缀后面的 'tjndi " 则对应着 context. xml 文件中< EnviTonment >元素的 name 属性;
使用JNDI的步骤
-
配置资源;
-
通过 Context 的 lookup()方法查找资源;
2.数据库连接池
2.1 连接池(Connection Pool)
2.2 数据库连接池:数据库连接池负责分配、管理和释放数据库连接;
-
它允许应用程序重复使用一个现有的数据连接,而不再是重新建立一个;
-
释放那些空闲时间超过最大空闲时间的数据库连接,以避免由于有释放数据库连接而引起的数据库连接泄露;
-
明显提高数据库的操作性能
2.3 连接池原理
2.4 连接池是如何管理连接的?
2.5 数据库连接池技术带来的优势
- 资源重用
- 更快的系统响应速度
- 据库连接初始化和释放过程的时间开销,从而缩减了系统整体响应时间。
- 统一的连接管理,避免数据库连接泄漏