还记得3年前写的第一个Java操作JDBC的程序,关于连接参数的配置全都硬编码写在Java代码里面。然后开始尝试着使用数据库连接池,比如DBCP、C3P0之类的,并且把连接池的设置参数写在属性文件里面,如mysql.properties,然后累死累活的从属性文件中把连接池参数解析出来,只为了修改参数的之后不再重新编译Java源文件。在使用Spring框架之后,终于从属性文件的解析中解脱出来,感觉对数据库连接池使用的学习应该到此结束。
在生产环境下,为了使对数据库连接池参数的修改生效,不得不重启Tomcat,这真是个噩梦。然而,在学习了Tomcat对JNDI数据源的支持后,这不在是一个问题了。
【一】. context.xml与JNDI数据源:
<1>. 我们可以将JNDI数据源的配置放在Tomcat的/conf/context.xml文件中完成,Tomcat能够自动检测到context.xml文件内容的修改,并重新加载。关于JNDI:全称为Java命名与目录接口(Java Naming and Directory Interface)。 允许我们通过对象的“名称”来访问一个对象。
<2>. Tomcat容器支持JNDI规范,默认使用tomcat-dbcp.jar依赖,context.xml文件的配置如下所示:
<?xml version='1.0' encoding='utf-8'?> <Context> <Resource name = "excelsoft-jndi-test" auth = "Container" type = "javax.sql.DataSource" driverClassName = "org.postgresql.Driver" url = "jdbc:postgresql://127.0.0.1:5432/jndi-test" username = "postgres" password = "postgres" maxActive = "200" maxIdle = "30" maxWait = "5000" /> </Context>
[说明]
1. 定义Resource的名称为excelsoft-jndi-test,可以定义多个<Resource>节点来连接多个数据库。
2. driverClassName:指定jdbc驱动类,这里使用的是PostgreSQL数据库,需要将PostgreSQL的JDBC驱 动添加到Tomcat的/lib目录下面,本例中使用postgresql-9.3-1100.jdbc4.jar驱动程序。
3. 连接池参数设置:
maxActive:最大活动连接数,最多能创建的物理连接数。
maxIdle:最大空闲连接数,多余的空闲连接将被回收。
maxWait:最大等待时间,单位为ms。
【二】.web应用中的配置:
在web应用的web.xml中添加如下内容
<resource-ref> <description>jndi data source test</description> <res-ref-name>excelsoft-jndi-test</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>
【三】.使用JNDI数据源获取连接:可简单编写如下所示的工具类,仅供参考
/* * Copyright (c) 2014, Nick Xu, All rights reserved. */ package com.excelsoft.util; import java.sql.Connection; import java.sql.SQLException; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; /** * 功能简述: 一句话简述编写目的、主要功能等信息. * @author Nick Xu * @version 1.0 */ public class DBConn { private static DataSource dataSource; static { try { Context context = new InitialContext(); dataSource = (DataSource)context.lookup("java:comp/env/excelsoft-jndi-test"); } catch (NamingException e) { // Exception handler e.printStackTrace(); } } public static Connection getConn() { try { Connection conn = dataSource.getConnection(); return conn; } catch (SQLException e) { // Exception handler e.printStackTrace(); } return null; } public static void closeConn(Connection conn) { try { if(null != conn) { conn.close(); } } catch (SQLException e) { // Exception handler e.printStackTrace(); } } }
[说明]
1. 定义上下文对象:
Context context = new InitialContext();
2. 获取JNDI数据源:
DataSource dataSource = (DataSource)context.lookup("java:comp/env/excelsoft-jndi-test");
3. 从数据源中获取逻辑连接:
Connection conn = dataSource.getConnection();
4. 关闭连接:归还给数据库连接池
conn.close();
==================================
项目源码,参见附件!OK,暂告一段落!
相关推荐
《Tomcat学习笔记》 Tomcat是一款开源的Java Servlet容器,是Apache软件基金会下的Jakarta项目中的核心项目,主要用于运行Java Web应用程序。本笔记将详细阐述Tomcat的安装、配置、虚拟主机设置、JDBC数据库连接池...
- 在应用服务器(如Tomcat)的`context.xml`或`server.xml`中注册JNDI数据源,将`BasicDataSource`实例绑定到一个JNDI名称下。 - 这样,应用可以通过JNDI查找这个数据源,而不是直接在代码中创建和管理数据库连接...
在Web服务器配置文件(如Tomcat的`server.xml`)中,可以通过配置`<Resource>`元素来定义JNDI数据源。 ```xml <Context path="/JNDI" reloadable="true" docBase="E:\workspace\JNDI" workDir="E:\workspace\JNDI\...
例如,你可能需要配置数据源、事务管理、安全策略等。此外,了解EJB的生命周期、并发控制、事务管理等概念对于正确使用OpenEjb和EJB至关重要。 OpenEjb的源码是开放的,这对于开发者学习EJB容器的内部工作原理非常...
### jBoss + Tomcat 学习笔记大全及帮助文档概览 #### 一、环境搭建与配置 在开始深入探讨jBoss与Tomcat的集成之前,我们先来了解如何搭建基本的开发环境。 ##### 1. Java 环境配置 - **安装 J2SDK1.4+ 和 J2...
在Tomcat中,数据源通常通过JNDI(Java Naming and Directory Interface)服务进行查找和绑定,以便于Web应用程序使用。 配置Tomcat6.0的数据源通常需要以下步骤: 1. **准备数据库驱动**:首先,确保你的系统已经...
3. **配置数据源**:在Web应用服务器如Tomcat、Jetty或JBoss中,数据源的配置通常在服务器的配置文件中完成,如Tomcat的`context.xml`或`server.xml`。配置项包括数据库驱动类、URL、用户名、密码等。在Spring框架中...
【JAVA WEB学习笔记】——Tomcat中数据源的配置与使用 在Java Web开发中,数据源(DataSource)是管理数据库连接的关键组件。它提供了一种高效、灵活的方式来获取和管理数据库连接,尤其是在大型企业级应用中。...
### Servlet学习笔记3:深入理解Servlet...综上所述,本学习笔记涵盖了Servlet技术的核心概念、Tomcat服务器配置、JNDI和数据源管理以及Java EE架构的概览,是Java Web开发者深入理解和掌握Servlet技术的重要参考资料。
【JProfiler学习笔记】 JProfiler是一款强大的Java性能分析工具,其直观的图形用户界面使得开发者能够轻松找到性能瓶颈,定位内存泄漏,并解决线程问题。本文将深入介绍JProfiler的主要功能,通过实战案例来帮助...
如果应用程序运行在支持JNDI的容器(如Tomcat)中,可以通过以下步骤配置JNDI数据源: **Step 1:** 在Tomcat的`server.xml`文件中添加数据源定义: ```xml type="javax.sql.DataSource" username="root" ...
在JavaEE中,它常用于在应用服务器中查找资源,如数据源、邮件会话等。 3. **EJB(Enterprise JavaBeans)** - EJB是JavaEE中的核心组件模型,分为三种类型:Session Beans(用于客户端交互)、Message-driven ...
5. **Naming and Directory**:Tomcat支持JNDI(Java Naming and Directory Interface),允许应用查找和绑定资源,如数据源和EJB引用。 6. **Connector(Engine、Host、Context)**:这些是Tomcat的容器概念,...
下面是对"自己总结的学习笔记"中涉及的DataSource及相关知识点的详细解释。 首先,我们来看Struts-config.xml文件。Struts是一个开源的MVC(Model-View-Controller)框架,用于构建基于Java Web的应用程序。在...
- **连接Oracle数据库**: 配置`context.xml`文件中的数据源信息以连接Oracle数据库。 - **Name**: 数据源名称。 - **Auth**: 认证模式。 - **Type**: 数据源类型。 - **DriverClassName**: JDBC驱动类名。 - **...
2. 配置数据源:在Tomcat的`conf/server.xml`文件中,找到`GlobalNamingResources`元素,然后添加一个新的`Resource`元素,定义数据源。例如: ```xml type="org.apache.commons.dbcp.BasicDataSource" ...
9. **Java Naming and Directory Interface (JNDI)**:JNDI提供了一个统一的接口,用于查找和绑定资源,如数据源或EJBs,这对于大型企业应用的管理和配置非常有用。 10. **Java Management Extensions (JMX)**:JMX...
5. **JNDI(Java Naming and Directory Interface)**:JNDI提供了一种查找和管理资源的接口,如EJB、数据源等。 **总结** J2EE学习笔记涵盖了JSP、Servlet以及J2EE架构中的关键组件,通过深入学习这些知识点,...
在实践中,你需要学习如何配置Tomcat服务器,编写Servlet来处理请求,使用JSP展示结果,以及如何通过Postman测试这些接口,确保它们正常工作。同时,理解MVC框架如Spring MVC或Struts,以及数据库操作,如SQL查询和...