`

Tomcat使用之一:JNDI数据源配置

阅读更多

1、添加全局数据源

在$TOMCAT_HOME$/conf/server.xml文件中添加以下JNDI数据源配置:

 

<Resource name="jdbc/test"  auth="Container" 
type="javax.sql.DataSource" 
username="test"  
password="test" 
driverClassName="oracle.jdbc.driver.OracleDriver"  
url="jdbc:oracle:thin:@localhost:1521:test"  
maxActive="100"  
maxIdle="30"  
maxWait="10000"/>
 

 

2、在应用中添加引用全局数据源的配置

在项目中/WEB-INF/下的web.xml中加入以下配置

 

<resource-ref> 
    <description>OracleDataSource</description> 
     <res-ref-name>jdbc/test</res-ref-name> 
     <res-type>javax.sql.DataSource</res-type> 
     <res-auth>Container</res-auth> 
</resource-ref>
 

3、添加JDBC驱动包

将Oracle的驱动包(ojdbc14.jar)放到拷贝到 $TOMCAT_HOME$/目录下的lib中。

 

4、在应用中使用JNDI(也可以在应用中使用Spring来获取Tomcat的JNDI数据源)

 

Context initContext = new InitialContext();   
Context envContext  = (Context)initContext.lookup("java:/comp/env");   
DataSource ds = (DataSource)envContext.lookup("jdbc/test");   
Connection conn = ds.getConnection(); 

 

疑问:

1、Tomcat采用的默认数据连接池类型是哪种?

Tomcat默认采用DBCP连接池,但是Tomcat默认使用的DBCP的jar包被tomcat重新打包整理了,类路径跟apache 的DBCP包不一样。被tomcat整理后的jar包在$TOMCAT_HOME$/lib/tomcat-dbcp.jar。

 

怎么证明Tomcat默认采用的就是被Tomcat整理过的DBCP呢?

打开$TOMCAT_HOME$/lib/catalina.jar的ResourceFactory.class的109行(如下代码):

 

else if (ref.getClassName().equals("javax.sql.DataSource")) {
        String javaxSqlDataSourceFactoryClassName = System.getProperty("javax.sql.DataSource.Factory", "org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory");
        try
        {
          factory = (ObjectFactory)Class.forName(javaxSqlDataSourceFactoryClassName).newInstance();
        }

当factory属性没有配置并且type属性等于 javax.sql.DataSource时,采用org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory数据库连接池。

 

2、如何改为自己指定的连接池类型?

 

如果你使用其他数据源如DBCP数据源,需要在<Resouce 标签多添加一个属性如factory="org.apache.commons.dbcp.BasicDataSourceFactory"当然你也要把DBCP相关jar包放在tomcat的lib目录下。

 

3、不同项目用到不用数据源,不要因为某些数据源没法访问而导致其他项目应用跑不起来。

在WebRoot下面建文件夹META-INF,里面建一个文件context.xml,添加内容和以上一样。可以把配置需要jar包直接放在WEB-INF的lib里面,而不需要一定要放在Tomcat的lib目录下。

如果一个项目分成几个war部署,建议采用全局数据源配置较好。如果只是开发可以使用局部的方式。

 

4、JNDI数据源配置在config/server.xml和config/context.xml有什么区别?

tomcat6版本中,context元素已经从server.xml文件中独立出来了,放在一个context.xml文件中。因为server.xml是不可动态重加载的资源,服务器一旦启动了以后,要修改这个文件,就得重启服务器才能重新加载。而context.xml文件则不然,tomcat服务器会定时去扫描这个文件。一旦发现文件被修改(时间戳改变了),就会自动重新加载这个文件,而不需要重启服务器。

 

 

分享到:
评论

相关推荐

    intellij idea使用tomcat开发时自动部署jndi数据源

    在代码中,我们可以通过以下方式查找并使用JNDI数据源: ```java InitialContext ic = new InitialContext(); DataSource ds = (DataSource) ic.lookup("java:comp/env/jdbc/MyDataSource"); Connection conn = ds....

    tomcat配置JNDI数据源

    以下是一种在Tomcat 5.5上配置JNDI数据源的详细步骤: 1. **放置驱动程序**: 将对应的数据库驱动JAR文件(如:ms-jdbc驱动或任何其他数据库的JDBC驱动)放入Tomcat安装目录下的`common/lib`文件夹,确保服务器...

    JNDI数据源配置(tomcat)

    然后,在 Tomcat 的 context.xml 文件中,添加一个 ResourceLink 节点,引用第一步配置的数据源: ```xml &lt;ResourceLink global="jndiName" name="jndiName" type="javax.sql.DataSource"/&gt; ``` 在上面的配置中...

    tomcat配置jndi数据源

    Tomcat 配置 JNDI 数据源 Tomcat 是一个流行的 Java Web 服务器,JNDI(Java Naming and Directory Interface)是 Java 中的一种命名和目录接口规范。Tomcat 中的 JNDI 数据源是指将数据库连接信息注册到 JNDI ...

    Tomcat配置JNDI数据源的N种方法

    Tomcat配置JNDI数据源的N种方法

    tomcat8 JNDI数据源加密

    TOMCAT8 JNDI对用户名和密码加密

    Tomcat6+spring+jndi配置数据源说明.docx

    Tomcat6+Spring+JNDI配置数据源说明 本文档主要介绍了Tomcat6+Spring+JNDI配置数据源的详细步骤和原理。数据源是一个池子,里面有若干个数据连接对象,当需要时就从里面拿一个使用,使用完毕就放回去,如果超过最大...

    配置 JNDI 数据源

    总结来说,配置JNDI数据源是Spring与Tomcat协同工作的一个重要环节,它提高了系统的灵活性和可维护性,同时也优化了数据库连接的管理。通过理解JNDI的工作原理以及如何在Spring中配置和使用JNDI数据源,开发者能够更...

    在Tomcat配置JNDI数据源的三种方式

    在Tomcat配置JNDI数据源的三种方式

    Tomcat-5配置JNDI数据源

    总结,配置Tomcat 5.5及以上版本的JNDI数据源涉及多个步骤,包括添加JDBC驱动、配置全局数据源、在应用中引用数据源以及在代码中通过JNDI查找并使用数据源。选择全局或局部配置取决于应用的需求和资源的共享范围。...

    tomcat jndi数据源解密factory

    自定义jndi数据源factory类,用于解密jndi中的加密数据,解密方式为DES,具体可根据实际需求修改。

    Tomcat下Teradata的JNDI数据源配置

    本篇文章将重点讲解如何在Tomcat服务器上配置Teradata的JNDI数据源。 首先,Teradata是一个高性能、可扩展的企业级数据库系统,广泛应用于大型企业。而JNDI则是Java平台中的一个标准服务,提供了一种查找和访问各种...

    用dbcp连接池,mysql数据库,在tomcat服务器下,通过hibernate配置jndi数据源.doc

    综上所述,这个文档主要讲述了如何在Tomcat服务器上,通过Hibernate和JNDI数据源配置,使用DBCP连接池连接MySQL数据库。尽管Hibernate官方并不推荐使用DBCP,但文档仍然提供了详细的配置步骤,包括环境准备、数据库...

    Tomcat学习笔记 - 【使用JNDI数据源】

    本文将深入探讨如何在Tomcat中配置和使用JNDI数据源。 **一、JNDI数据源的优势** 1. **集中管理**:所有应用共享同一数据源配置,避免了代码中的硬编码,方便管理和更新。 2. **解耦合**:应用与数据库连接细节分离...

    java中使用tomcat提供的JNDI数据源

    首先,在Tomcat中配置JNDI数据源需要创建一个`Resource`元素在特定的`Context`配置文件中。具体步骤如下: 1. **创建发布XML文件**:在`jakarta-tomcat-5.5.9\conf\Catalina\localhost`目录下创建一个名为`myprj....

    Tomcat中配置数据源JNDI

    在Tomcat中配置数据源JNDI是Java Web应用开发中的一个常见任务。通过上述介绍的方法,可以根据不同的应用场景选择合适的数据源配置方案。需要注意的是,正确的配置不仅包括XML文件的编写,还包括相关驱动的正确安装...

    JNDI配置数据源在java web开发中的使用

    在Java代码中,我们可以使用以下方式获取数据源: ```java Context initCtx = new InitialContext(); Context envCtx = (Context) initCtx.lookup("java:/comp/env"); DataSource ds = (DataSource) envCtx....

    JNDI数据源配置

    接下来,我们来看一下如何在Tomcat服务器中配置JNDI数据源。 ##### 4.1 配置`web.xml` 首先,在`WEB-INF`目录下的`web.xml`文件中定义数据源引用: ```xml 数据源说明 &lt;res-ref-name&gt;jdbc/AcmeDB &lt;res-type&gt;...

    J2EE基础:JNDI定义Oracle数据源的方法

    2. **web.xml配置**:在应用的`WEB-INF/web.xml`文件中,定义一个`&lt;resource-ref&gt;`元素来引用JNDI数据源: ```xml &lt;description&gt;Oracle Datasource example &lt;res-ref-name&gt;jdbc/myoracle &lt;res-type&gt;javax.sql....

Global site tag (gtag.js) - Google Analytics