Tomcat中用JNDI方式加载JDBC DataSource以连接数据库
概括一下,大致分为四步:安装驱动,填充context.xml,填充web.xml,编写程序取得连接。通过一个小DEMO对这种配置方式有了一点了解,以tomcat6.0连接mysql5.0.8数据库为例。
安装驱动
下载与所要连接的数据库版本对应的JDBC驱动程序,加入到应用的CLASSPATH。如果用tomcat部署,tomcat中最好也加上(笔者觉得好像没必要加,可是不加的话会报错……所以还是加了)。应该有办法不加的,若有高手路过,请指点。
填充context.xml
这里就像是做声明样的,把你要连接时的相关属性定义在里面。我的配置如下:
<Context crossContext="true" docBase="E:/workspace/myeclipse-workspace/WebDevDemo/WebRoot" path="/webdemo">
<Resource name="jdbc/EmployeeDB"
auth="Container"
type="javax.sql.DataSource"
username="root"
password=""
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/employee"
maxActive="8"
maxIdle="4"/>
</Context>
填充web.xml。我的配置:
<resource-ref>
<res-ref-name>jdbc/EmployeeDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
编写程序取得连接。俺的程序:
Context ctx = null;
Context context = null;
DataSource dataSource = null;
Connection conn = null;
PreparedStatement statement = null;
ResultSet rs = null;
try {
ctx = new InitialContext();
context = (Context) ctx.lookup("java:comp/env");
dataSource = (DataSource)context.lookup("jdbc/EmployeeDB");
} catch (NamingException e) {
e.printStackTrace();
}
try {
conn = dataSource.getConnection();//获得连接
// 取数据
statement = conn.prepareStatement(SQL_FIND_ALL_SALARY_RECORDS);
rs = statement.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
按照以上的方式就能在tomcat里以配置的形式连接数据库,比我们把所有的连接属性都定义在类里要方便多了。由于公司用的还是5.0版的tomcat,所以笔者也用这个进行了实验,在操作上与6.0有两处不同:
(1)在上面的第一步,加载驱动时。若是5.0版的,驱动的JAR包要放在%CATALINA_HOME%\common\lib下面;若是6.0版的,驱动的JAR包要放在%CATALINA_HOME%\lib下面。
(2)在上面的第二步,声明连接的方式有所不同。5.0版比较复杂点,需要像下面这样配:
<Context crossContext="true" docBase="E:/workspace/myeclipse-workspace/WebDevDemo/WebRoot" path="/webdemo">
<Resource name="jdbc/EmployeeDB" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/EmployeeDB">
<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>password</name>
<value></value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost:3306/employee</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>8</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>4</value>
</parameter>
</ResourceParams>
</Context>
效果一样,只是写法不同,6.0版本对配置文件做了简化,所以看起来清爽一些。呵呵,这貌似就是软件的升级哦
http://hi.baidu.com/lck0502/item/81fd0fd1c1321ce4b3f7777c
Tomcat中用JNDI方式加载JDBC DataSource以连接数据库的更多相关文章
- java基础-jdbc——三种方式加载驱动建立连接
String url = "jdbc:mysql://localhost:3306/student?Unicode=true&characterEncoding=utf-8" ...
- java加载jdbc驱动三种方式的比较
一.引言 平时连接数据库的时候首先要加载jdbc驱动,这一步骤其实有三种方式,他们的区别?优劣? 二.快速了解三种加载方式 Class.forName(“com.mysql.jdbc.Driver”) ...
- Tomcat通过JNDI方式链接MySql数据库
原文:Tomcat通过JNDI方式链接MySql数据库 拷贝MySQL的JDBC驱动到Tomcat的lib路径下 配置全局数据源或者单个Web应用的局部数据源 局部数据源 在Tomcat的conf/C ...
- 使用web.xml方式加载Spring时,获取Spring context的两种方式
使用web.xml方式加载Spring时,获取Spring context的两种方式: 1.servlet方式加载时: [web.xml] <servlet> <servlet-na ...
- Tomcat启动,不能加载项目问题。
项目部署时遇到的一个Tomcat问题: 启动tomcat后,不能加载项目 直接启动完成 但是项目未加载 最后找到原因: 把环境变量Catalina_HOME删除掉,就能加载. tomcat启 ...
- Tomcat启动时自动加载Servlet
1.想做一个服务启动时自动启动一不停止的获取订阅功能 2.之前是做一个Jsp页面请求servlet来触发方法 3.现在实现Tomcat启动时自动加载Servlet 1.Tomcat中启动Servlet ...
- MVC Ajax Helper或jQuery异步方式加载部分视图
Model: namespace MvcApplication1.Models { public class Team { public string Preletter { get; set; } ...
- Eclipse tomcat插件禁用热加载
Eclipse中的tomcat插件默认是开户了热加载,只要是修改了java文件一保存,tomcat自动编译.加载.发布,很吃内存. 关闭方法: 打开eclipse,找到server项: 双击打开,修改 ...
- 重新想象 Windows 8 Store Apps (54) - 绑定: 增量方式加载数据
[源码下载] 重新想象 Windows 8 Store Apps (54) - 绑定: 增量方式加载数据 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 绑定 通过实 ...
随机推荐
- pip---cannot import name main解决方案
.先来看下Python不同版本对应的路径 which python3. which python3. .使用update-alternatives --install建立链接 sudo update- ...
- linux系统编程之文件与io(二)
今天继续学习文件与io,话不多说,开始进入正题: 文件的read和write系统调用: 说明:函数中出现在size_t和ssize_t是针对系统定制的数据类型: 下面以一个实现文件简单拷贝的示 ...
- P2756 飞行员配对方案问题[二分图最大匹配]
题目描述 英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2 名飞行员,其中1 名是英国飞行员,另1名是外籍飞行员.在众多的飞行员中,每一名 ...
- 《你说对就队》第八次团队作业:Alpha冲刺
<你说对就队>第八次团队作业:Alpha冲刺 项目 内容 这个作业属于哪个课程 [教师博客主页链接] 这个作业的要求在哪里 [作业链接地址] 团队名称 <你说对就队> 作业学习 ...
- 织梦xss通杀所有版本漏洞【学习笔记】
漏洞原因:DEDECMS由于编辑器过滤不严,将导致恶意脚本运行.可getshell取得权限.为什么说它是0Day呢?能getshell的都算0Day(鸡肋发挥起来也能变凤凰)目前只是测试过5.3到5. ...
- HP DL388 Gen9 Raid P440ar 工具
HP DL388 Gen9 服务器raid升级P440ar,原先的hpacucli 不能使用,新的工具为hpssacl hpssacli-2.10-14.0.x86_64.rpm 下载地址:wget ...
- Mysql 基础 1
MySQL基础 1.概念 数据库,为我们提供高效.便捷的方式对数据进行增删改查的工具 优势 程序稳定.数据一致性.并发.效率 2.数据库管理系统 (DataBase Management System ...
- [LuoguP1462]通往奥格瑞玛的道路
题目链接 题意简述:现在有一个图,每经过一个点就会交钱,走一条路就会扣血.在血量>0的前提下,要从1走到n点,并且要求路径上交钱的最大值最小. 解题思路:首先最大值最小,我们选择二分.目前有两个 ...
- 汇编语言笔记 CALL和RET指令
转载地址:http://www.cnblogs.com/dennisOne ☞模块化程序设计 模块化程序设计 汇编语言通过call和ret指令实现了模块化程序设计.可以实现多个相互联系.功能独立的子程 ...
- orm-配置不启动项目自动查询orm
配置 #!/usr/bin/env python import os import sys if __name__ == "__main__": os.environ.setdef ...