Tomcat6配置JNDI数据源教程:三种方法解析
需积分: 10 68 浏览量
更新于2024-09-15
收藏 5KB TXT 举报
"在Tomcat服务器中配置数据源JNDI是JavaWeb应用程序连接数据库的重要方式,它允许应用通过统一的名称(JNDI名称)查找和管理数据源,而无需在代码中硬编码数据库连接参数。本教程将详细介绍如何在Tomcat 6.0版本中设置数据源JNDI,包括三种不同的配置方法,以及解决可能出现的异常问题。"
在Tomcat中配置数据源JNDI的方法主要有以下三种:
方法一:通过`context.xml`配置
1. 首先,在Tomcat的`conf`目录下的`context.xml`文件中添加数据源配置。在`<Context>`标签内,创建一个`<Resource>`元素,指定数据源的相关属性,例如名称、认证方式、类型、数据库用户名、密码、驱动类名以及数据库连接URL等。例如:
```xml
<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource" password="localhost" username="root" driverClassName="org.gjt.mm.mysql.Driver" url="jdbc:mysql://localhost/myznt" maxActive="100" maxIdle="30" maxWait="5000"/>
```
2. 然后,在应用的`WEB-INF/web.xml`文件中添加资源引用(`<resource-ref>`),以关联之前在`context.xml`中定义的数据源:
```xml
<resource-ref>
<description>MySQLDataSource</description>
<res-ref-name>jdbc/myznt</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
```
这里的`res-ref-name`应该与`context.xml`中的`name`属性匹配。
方法二:通过`server.xml`配置
另一种方法是在`conf/server.xml`文件的`<GlobalNamingResources>`元素下配置全局数据源,这样所有部署在Tomcat上的应用都能访问到这个数据源。配置过程类似,只是位置不同。
异常处理
在配置过程中可能会遇到一些常见异常,例如:
1. `org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'`:这通常是因为没有正确配置或缺失了数据库驱动。确保已将相应的JDBC驱动库(如MySQL的`mysql-connector-java.jar`)添加到Tomcat的`lib`目录。
2. `java.sql.SQLException: No suitable driver`:这个错误意味着找不到适合的数据库驱动。检查驱动类名是否正确,并确认驱动库已加载。
3. `Name jdbc is not bound in this context`:此错误表明JNDI名称未绑定。确保`context.xml`或`server.xml`中的`name`属性与`web.xml`中的`res-ref-name`属性一致。
配置完成后,应用可以通过JNDI查找并获取数据源,从而实现对数据库的连接和操作,提高了代码的可维护性和灵活性。例如,使用Java代码可以这样获取数据源:
```java
InitialContext ic = new InitialContext();
DataSource ds = (DataSource) ic.lookup("java:comp/env/jdbc/myznt");
Connection conn = ds.getConnection();
```
这里,`java:comp/env/jdbc/myznt`就是我们在配置文件中定义的JNDI名称。
2019-05-29 上传
2016-12-13 上传
2009-05-19 上传
2013-07-24 上传
2011-10-27 上传
点击了解资源详情
2019-04-02 上传
2019-05-25 上传
yinshuanghua
- 粉丝: 2
- 资源: 28
最新资源
- Angular实现MarcHayek简历展示应用教程
- Crossbow Spot最新更新 - 获取Chrome扩展新闻
- 量子管道网络优化与Python实现
- Debian系统中APT缓存维护工具的使用方法与实践
- Python模块AccessControl的Windows64位安装文件介绍
- 掌握最新*** Fisher资讯,使用Google Chrome扩展
- Ember应用程序开发流程与环境配置指南
- EZPCOpenSDK_v5.1.2_build***版本更新详情
- Postcode-Finder:利用JavaScript和Google Geocode API实现
- AWS商业交易监控器:航线行为分析与营销策略制定
- AccessControl-4.0b6压缩包详细使用教程
- Python编程实践与技巧汇总
- 使用Sikuli和Python打造颜色求解器项目
- .Net基础视频教程:掌握GDI绘图技术
- 深入理解数据结构与JavaScript实践项目
- 双子座在线裁判系统:提高编程竞赛效率