可能你在网上也会找到另外的一些文章,配置方法真是五花八门!但是如果你细心一点就会发现,可能都会要求你把JDBC驱动放到%CATALINA_HOME%\common\lib下面。其实这会给别人带来部署上的不方便,因为更改了别人的文件系统。
至于为什么会有这样的要求,那是因为在配置数据源的时候,默认采用了Tomcat自带的那个DBCP数据源,或者配置了自己的数据源却没有把相应的一些JAR包放到工程的WEB-INF\lib下。
第一种情况,如果你使用Tomcat自带的DBCP数据源,那么也就是由Tomcat来负责初始化和连接数据库,但是Tomcat没有自带JDBC驱动,在Tomcat中,Tomcat的ClassLoader不会去装载具体应用的Jar,所以当然是会报找不到驱动啦!
第二种情况,如果配置了自己的数据源却没有相应JAR包的话,那么Tomcat就会采用他自己的JAR包,原因和上面类似。
现在我所谓的“Tomcat使用JNDI获取数据源完美方案”,就是指只需要把相应的驱动和DBCP包放到WEB-INF\lib下,就可以通过JNDI正常访问到数据源的意思。
首先要配置一个数据源,我这里采用DBCP,在%TOMCAT_HOME%\conf\Catalina\localhost\下建立一个以你的工程名字命名的XML文件,我这里是Test.xml,内容如下:
<?xml version='1.0' encoding='utf-8'?>
<Context path="/Test" docBase="F:\WorkSpace\Test\WebRoot" debug="0" reloadable="true">
<Resource name="jdbc/manage" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/manage">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>removeAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>logAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost/sample?useUnicode=true&characterEncoding=UTF-8</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>username</name>
<value>root</value>
</parameter>
<parameter>
<name>password</name>
<value></value>
</parameter>
<parameter>
<name>maxWait</name>
<value>3000</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>100</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>10</value>
</parameter>
</ResourceParams>
</Context>
docBase是你的工程存放的物理路径,url是连接字符串,username就是连接数据库的用户名,password是数据库连接密码。
第二步:编辑你的工程下的WEB-INF\web.xml文件,加上以下一段:
<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<resource-ref>
<res-ref-name>jdbc/manage</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
这里是做一个引用的意思,具体含义我也不清楚。
做完以上步骤就行了,在lookup数据源的时候,需要在这个数据源前面加上java:comp/env/,这个东西是Tomcat的一个默认的命名空间。
相关推荐
- 在服务器配置文件(如Tomcat的`context.xml`或应用的`web.xml`)中定义JNDI数据源,引用属性文件中的连接信息。 - 在应用代码中,使用`InitialContext`查找JNDI数据源,然后从数据源获取数据库连接。 - 示例...
本文将详细介绍JNDI在Tomcat中的三种常见配置方式及其应用场景。 #### 二、JNDI配置方式概述 JNDI在Tomcat中有三种常见的配置方式: 1. **全局配置**:在`context.xml`中进行配置,适用于所有Web应用程序。 2. **...
JNDI不仅限于文件系统,它也可以是其他类型的服务器,例如LDAP服务器,应用服务器如Tomcat、JBoss等通常都提供了对JNDI的支持。在给定的例子中,我们将看到如何使用JNDI来绑定和查找Oracle数据源。 1. **绑定数据源...
7. **配置解析**:Tomcat读取`server.xml`、`context.xml`等配置文件,学习配置解析逻辑能帮助你更好地定制服务器。 8. **JAR依赖**:Tomcat运行需要一系列的库文件,理解这些依赖可以帮助你解决部署问题。 在学习...
JNDI配置文档(如`JNDI配置.doc`)可能包含如何在不同应用服务器(如Tomcat、JBoss、WebLogic等)中配置JNDI资源的详细步骤,包括设置应用服务器的配置文件、编写JNDI绑定代码以及处理相关异常等内容。这些配置对于...
1. 加载服务器配置:Tomcat读取`conf/server.xml`文件,这是服务器的主要配置文件,定义了服务器的端口、连接器、上下文等。 2. 初始化:Tomcat初始化各个模块,如JMX注册、JNDI目录等。 3. 加载 Realm:Realm是...
Context是每个Web应用的容器,而GlobalNamingResources则提供了应用间共享的JNDI资源。 通过阅读和分析Tomcat源码,我们可以学习到以下知识点: 1. **Servlet生命周期**:Tomcat如何加载、初始化、服务、销毁...
7. **Naming**:Tomcat支持JNDI(Java Naming and Directory Interface),允许Web应用查找和绑定资源。 8. **Security**:Tomcat提供了安全功能,包括角色基于的安全管理和SSL支持。`org.apache.catalina....
当我们启动Tomcat时,它首先会读取`conf/server.xml`配置文件,该文件定义了服务器的各个组件和监听的端口。接着,Tomcat会加载`WEB-INF/web.xml`中的应用配置,初始化Servlet和过滤器,并启动连接器、上下文、...
2. **启动过程分析**:Tomcat的启动过程包括读取配置文件、初始化服务器、加载web应用等步骤。其中,`catalina.sh/bat`是主要的启动脚本,它会读取`conf/server.xml`等配置文件,这些文件定义了服务器的端口、线程池...
Tomcat提供了多种方式来实现session共享,如使用粘性会话、共享内存、数据库存储以及基于JNDI的会话复制等。 1. **粘性会话(Sticky Sessions)**:这是最简单的session共享方式,通过负载均衡器将特定用户的请求...
这可以通过编写自定义的`ResourceSet`类来实现,该类可以读取配置文件或其他来源的信息来动态创建JNDI资源。 ##### 6.2 安全性考虑 当配置JNDI资源时,还需要考虑安全性问题。例如,可以使用加密的方式存储敏感...
Tomcat 实现了Servlet API规范,提供了一个运行Servlet和JSP的平台,同时扩展了部分应用服务器功能,如JNDI(Java Naming and Directory Interface)、数据库连接池以及用户事务处理等。 Tomcat 的主要组成部分包括...
1. **启动**:Tomcat启动时,会读取配置文件(如server.xml和web.xml),解析并加载所有必要的组件和服务。 2. **请求处理**:当HTTP请求到达时,Connector捕获请求,解析请求头和实体,然后将请求转发给Catalina...
启动Tomcat时,`catalina.sh`(或`catalina.bat`)脚本会读取配置并启动服务器。 9. **安全与权限** Tomcat支持角色基的安全模型,通过`tomcat-users.xml`配置用户角色和权限,以及在`web.xml`中定义受保护的URL和...
3. **数据源配置(Resource)**:在`server.xml`或`context.xml`中配置JNDI数据源,便于JDBC连接的管理。数据源的配置包括数据库URL、用户名、密码、驱动类名等。 4. **JDBC驱动配置**:将JDBC驱动的JAR文件放入...
在这个测试案例中,开发者遇到了一个问题,即在使用Maven构建的JNDI环境中,通过IntelliJ IDEA的Tomcat 7插件运行应用时,出现了无法连接到`context.xml`配置文件的错误。 首先,我们需要了解JNDI的基本概念。JNDI...
5. **GlobalNamingResources**:全局命名资源,提供JNDI服务,用于应用程序间的资源共享。 6. **Context**:上下文,对应一个Web应用程序,负责管理Web应用中的所有资源。 7. **Host**:主机,可以配置多个虚拟主机...
6. **配置解析**:理解Tomcat如何读取和解析服务器和应用程序的配置文件。 7. **性能优化**:通过源码分析,找出可能的性能瓶颈,并学习如何调整配置以提高性能。 8. **扩展性**:了解如何编写自定义Valves(请求...