以前写JDBC的时候总是手工写一个类,用硬代码写上className、url、用户名和密码什么的,然后通过DriverManager获取到Connection。那样写是很方便,但是如果想更改的话,需要修改源码再编译,给后期修改带来不便。最近看到可以使用JNDI的方法使用xml文件配置JDBC数据源,xml文件存放在war下面,这样的话就很方便我们修改jdbc的连接属性了。

  首先了解下JNDI吧,百度搜索结果:JNDI(Java Naming and Directory Interface,Java命名和目录接口)是SUN提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI SPI的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。目录服务是一种命名服务,在这种服务里,对象不但有名称,还有属性。拿我的理解就是:服务商提供一个api,然后可以利用JNDI查找到该服务商提供的功能。

  要想在Tomcat下使用JNDI配置数据源,首先得在META-INF目录下创建一个context.xml文件。例如:

 <?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource
name="jndi/datasource" //数据源名称,在JNDI中用到
type="javax.sql.DataSource" // 数据源类型
driverClassName="com.mysql.jdbc.Driver" //驱动名称
url="jdbc:mysql://localhost:3306/database" //连接数据源的url
username="name" //数据库用户名
password="pass" //数据库密码
maxActive="10" //指定数据库连接池中处于活动状态的数据库连接最大数目,0表示不受限制
maxldle="5" //指定数据库连接池中处于空闲状态的数据库连接的最大数目,0表示不受限制
maxWait="80000" //指定数据库连接池中的数据库连接处于空闲状态的最长时间(单位为毫秒),超过这一事件,将会抛出异常。-1表示可以无限期等              待。
> </Resource>
</Context>

数据源配置好了,就开始调用了,调用代码如下:

     import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
private static InitialContext context;
private static DataSource dataSource; public static Connection getConn(){
Connection con = null;
try {
context = new InitialContext();
dataSource = (DataSource) context.lookup("java:comp/env/jndi/datasource"); //此处的jndi/datasource 就是配置数据源的名称
con = dataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
} catch (NamingException e) {
e.printStackTrace();
}
return con;
}

这样就能获取到Connection了,然后就能和以前一样使用了。

  

Tomcat中使用JNDI加载JDBC数据源的更多相关文章

  1. 对tomcat中使用反射加载类的理解

    public void init() throws Exception { initClassLoaders(); //加载一下jar包和类 Thread.currentThread().setCon ...

  2. Java 类在 Tomcat 中是如何加载的?

    作者 :xingoo https://www.cnblogs.com/xing901022/p/4574961.html 说到本篇的Tomcat类加载机制,不得不说翻译学习Tomcat的初衷. 之前实 ...

  3. 通过源码浅析Java中的资源加载

    前提 最近在做一个基础组件项目刚好需要用到JDK中的资源加载,这里说到的资源包括类文件和其他静态资源,刚好需要重新补充一下类加载器和资源加载的相关知识,整理成一篇文章. 理解类的工作原理 这一节主要分 ...

  4. Tomcat启动时自动加载Servlet

    1.想做一个服务启动时自动启动一不停止的获取订阅功能 2.之前是做一个Jsp页面请求servlet来触发方法 3.现在实现Tomcat启动时自动加载Servlet 1.Tomcat中启动Servlet ...

  5. 详解web.xml中元素的加载顺序

    一.背景 最近在项目中遇到了启动时出现加载service注解注入失败的问题,后来经过不懈努力发现了是因为web.xml配置文件中的元素加载顺序导致的,那么就抽空研究了以下tomcat在启动时web.x ...

  6. Eclipse tomcat插件禁用热加载

    Eclipse中的tomcat插件默认是开户了热加载,只要是修改了java文件一保存,tomcat自动编译.加载.发布,很吃内存. 关闭方法: 打开eclipse,找到server项: 双击打开,修改 ...

  7. Android中ListView异步加载图片错位、重复、闪烁问题分析及解决方案

    我们在使用ListView异步加载图片的时候,在快速滑动或者网络不好的情况下,会出现图片错位.重复.闪烁等问题,其实这些问题总结起来就是一个问题,我们需要对这些问题进行ListView的优化. 比如L ...

  8. Tomcat启动时自动加载一个类

    有时候在开发Web应用的时候,需要tomcat启动后自动加载一个用户的类,执行一些初始化方法,如从数据库中加载业务字典到内存中,因此需要在tomcat启动时就自动加载一个类,或运行一个类的方法. 可以 ...

  9. 关于asp.net中页面事件加载的先后顺序

    一.ASP.NET 母版页和内容页中的事件 母版页和内容页都可以包含控件的事件处理程序.对于控件而言,事件是在本地处理的,即内容页中的控件在内容页中引发事件,母版页中的控件在母版页中引发事件.控件事件 ...

随机推荐

  1. CSS预处理器Sass、LESS 和 Stylus

    CSS 预处理器技术已经非常的成熟,而且也涌现出了越来越多的 CSS 的预处理器框架.本文向你介绍使用最为普遍的三款 CSS 预处理器框架,分别是 Sass.Less CSS.Stylus. 首先我们 ...

  2. silverlight调用webservice跨域

    下载下面的任何文件放在webservice的根目录下 http://files.cnblogs.com/files/jichunhu/crossdomain.xml http://files.cnbl ...

  3. eclipse 3.6 + tomcat 6.0 开发SSH框架学习

    1. 下载JDK 1.6.0.35 http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html 下载之后 ...

  4. OAF 中的EO 和VO

    EO :oracle.apps.fnd.framework.server.OAEntityImpl VO:oracle.apps.fnd.framework.server.OAViewRowImpl ...

  5. linux命令(3):pwd命令

    Linux中用 pwd 命令来查看”当前工作目录“的完整路径. 简单得说,每当你在终端进行操作时,你都会有一个当前工作目录. 在不太确定当前位置时,就会使用pwd来判定当前目录在文件系统内的确切位置. ...

  6. 获取android控件的高度

    问题 如何获取一个控件的长和高,相信很多朋友第一眼看见这个问题都会觉得很简单,直接在onCreate里面调用getWidth.getMeasuredWidth不就可以获得了吗,但是,事实上是并没有简单 ...

  7. install LLVM

    version >= 3.8.0 $ cd llvm... $ mv someofClang ./tools $ mkdir build $ cd build $ cmake -DCMAKE_B ...

  8. Python SQLAlchemy --2

    本文為 Python SQLAlchemy ORM 一系列教學文: 接下來會更深入地探討查詢的使用. 查詢的基本使用法為 session.query(Mapped Class),其後可加 .group ...

  9. 关于monkeyrunner的一些初步理解性的题目

    1.Monkeyrunner中包含几个基本类?分别大概的作用是什么? Monkeyrunner中基本包含了MonkeyRunner,MonkeyDevice,MonkeyImage MonkeyRun ...

  10. 文件上传——servlet实现

    自己对照别的博主的博客实现的,记录用. 整个上传的结构如下: 上传的页面:unload.jsp <%@ page language="java" import="j ...