`

tomcat读取jndi

 
阅读更多

可能你在网上也会找到另外的一些文章,配置方法真是五花八门!但是如果你细心一点就会发现,可能都会要求你把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&amp;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的一个默认的命名空间。

分享到:
评论

相关推荐

    JavaJNDI 数据链接池及 属性文件读取数据链接信息

    - 在服务器配置文件(如Tomcat的`context.xml`或应用的`web.xml`)中定义JNDI数据源,引用属性文件中的连接信息。 - 在应用代码中,使用`InitialContext`查找JNDI数据源,然后从数据源获取数据库连接。 - 示例...

    JNDI详细配置解析

    本文将详细介绍JNDI在Tomcat中的三种常见配置方式及其应用场景。 #### 二、JNDI配置方式概述 JNDI在Tomcat中有三种常见的配置方式: 1. **全局配置**:在`context.xml`中进行配置,适用于所有Web应用程序。 2. **...

    用JNDI绑定DataSource

    JNDI不仅限于文件系统,它也可以是其他类型的服务器,例如LDAP服务器,应用服务器如Tomcat、JBoss等通常都提供了对JNDI的支持。在给定的例子中,我们将看到如何使用JNDI来绑定和查找Oracle数据源。 1. **绑定数据源...

    学习tomcat源码+英文《How Tomcat Work》和每一章的相关项目+tomcat6源码依赖jar

    7. **配置解析**:Tomcat读取`server.xml`、`context.xml`等配置文件,学习配置解析逻辑能帮助你更好地定制服务器。 8. **JAR依赖**:Tomcat运行需要一系列的库文件,理解这些依赖可以帮助你解决部署问题。 在学习...

    JNDI (1)

    JNDI配置文档(如`JNDI配置.doc`)可能包含如何在不同应用服务器(如Tomcat、JBoss、WebLogic等)中配置JNDI资源的详细步骤,包括设置应用服务器的配置文件、编写JNDI绑定代码以及处理相关异常等内容。这些配置对于...

    tomcat启动服务运行servlet

    1. 加载服务器配置:Tomcat读取`conf/server.xml`文件,这是服务器的主要配置文件,定义了服务器的端口、连接器、上下文等。 2. 初始化:Tomcat初始化各个模块,如JMX注册、JNDI目录等。 3. 加载 Realm:Realm是...

    tomcat源码

    Context是每个Web应用的容器,而GlobalNamingResources则提供了应用间共享的JNDI资源。 通过阅读和分析Tomcat源码,我们可以学习到以下知识点: 1. **Servlet生命周期**:Tomcat如何加载、初始化、服务、销毁...

    tomcat 6 源码

    7. **Naming**:Tomcat支持JNDI(Java Naming and Directory Interface),允许Web应用查找和绑定资源。 8. **Security**:Tomcat提供了安全功能,包括角色基于的安全管理和SSL支持。`org.apache.catalina....

    tomcat服务器工作原理

    当我们启动Tomcat时,它首先会读取`conf/server.xml`配置文件,该文件定义了服务器的各个组件和监听的端口。接着,Tomcat会加载`WEB-INF/web.xml`中的应用配置,初始化Servlet和过滤器,并启动连接器、上下文、...

    tomcat

    2. **启动过程分析**:Tomcat的启动过程包括读取配置文件、初始化服务器、加载web应用等步骤。其中,`catalina.sh/bat`是主要的启动脚本,它会读取`conf/server.xml`等配置文件,这些文件定义了服务器的端口、线程池...

    tomcat的session共享所需jar包

    Tomcat提供了多种方式来实现session共享,如使用粘性会话、共享内存、数据库存储以及基于JNDI的会话复制等。 1. **粘性会话(Sticky Sessions)**:这是最简单的session共享方式,通过负载均衡器将特定用户的请求...

    comcat配置jndi

    这可以通过编写自定义的`ResourceSet`类来实现,该类可以读取配置文件或其他来源的信息来动态创建JNDI资源。 ##### 6.2 安全性考虑 当配置JNDI资源时,还需要考虑安全性问题。例如,可以使用加密的方式存储敏感...

    Tomcat详细资料

    Tomcat 实现了Servlet API规范,提供了一个运行Servlet和JSP的平台,同时扩展了部分应用服务器功能,如JNDI(Java Naming and Directory Interface)、数据库连接池以及用户事务处理等。 Tomcat 的主要组成部分包括...

    深入剖析Tomcat .rar

    1. **启动**:Tomcat启动时,会读取配置文件(如server.xml和web.xml),解析并加载所有必要的组件和服务。 2. **请求处理**:当HTTP请求到达时,Connector捕获请求,解析请求头和实体,然后将请求转发给Catalina...

    tomcat 源代码

    启动Tomcat时,`catalina.sh`(或`catalina.bat`)脚本会读取配置并启动服务器。 9. **安全与权限** Tomcat支持角色基的安全模型,通过`tomcat-users.xml`配置用户角色和权限,以及在`web.xml`中定义受保护的URL和...

    关于jndi的连接数据库

    开发者可以将数据库连接参数存储在属性文件中,然后在应用程序中读取这些参数以建立数据库连接。这种方式的优点是配置更加灵活,不需要依赖服务器的配置,但失去了JNDI提供的集中管理和透明性。 JNDI连接数据库的...

    jdbc以及配置tomcat

    3. **数据源配置(Resource)**:在`server.xml`或`context.xml`中配置JNDI数据源,便于JDBC连接的管理。数据源的配置包括数据库URL、用户名、密码、驱动类名等。 4. **JDBC驱动配置**:将JDBC驱动的JAR文件放入...

    JNDI_test测试案例

    在这个测试案例中,开发者遇到了一个问题,即在使用Maven构建的JNDI环境中,通过IntelliJ IDEA的Tomcat 7插件运行应用时,出现了无法连接到`context.xml`配置文件的错误。 首先,我们需要了解JNDI的基本概念。JNDI...

    Tomcat服务器

    5. **GlobalNamingResources**:全局命名资源,提供JNDI服务,用于应用程序间的资源共享。 6. **Context**:上下文,对应一个Web应用程序,负责管理Web应用中的所有资源。 7. **Host**:主机,可以配置多个虚拟主机...

    tomcat及源码

    6. **配置解析**:理解Tomcat如何读取和解析服务器和应用程序的配置文件。 7. **性能优化**:通过源码分析,找出可能的性能瓶颈,并学习如何调整配置以提高性能。 8. **扩展性**:了解如何编写自定义Valves(请求...

Global site tag (gtag.js) - Google Analytics