为tomcat动态添加jndi数据源信息

我们在开发项目的时候,总要和数据库打交道,如何获取数据源,以什么样的方式来获取,成为了我们即简单又熟悉而且不得不注意的一个问题。

那么在这里我说三种获取数据源的常用方式:

一、通过配置文件来获取
  1. 首先在项目的classPath下面,建立一个配置文件,如jdbc.properties。
  2. 通过最原始的方式,解析这个配置文件,然后读取配置信息,再封装jdbc信息,从而得到数据源。
  3. 使用spring;通过spring去建立dataSource Bean。这个dataSource Bean里的信息同样来自己于你的配置文件。注意要在配置文件中加入:

<context:property-placeholder location="classpath:jdbc.properties" />

引入静态文件

4.Spring中的dataSource bean大致如下:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName" value="${driverClassName}" />
        <property name="url" value="${url}" />
        <property name="username" value="${username}" />
        <property name="password" value="${password}" />
        <property name="maxActive" value="20" />
        <property name="initialSize" value="1" />
        <property name="maxWait" value="60000" />
        <property name="maxIdle" value="20" />
        <property name="minIdle" value="3" />
        <property name="removeAbandoned" value="true" />
        <property name="removeAbandonedTimeout" value="180" />
        <property name="connectionProperties" value="clientEncoding=UTF-8" />
</bean>

dataSource bean

  5.配置文件的内容大致如下:

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/springsecurity?allowMultiQueries=true
username=root
password=123456

jdbc配置文件

二、通过jndi来获取
  1. 说明:通过jndi的方式来获取,通常是在使用spring的情况下使用,当然也可以是其它方式。
  2. 首先,在tomcat的config目录下的context.xml文件中,加入如下语句:

<Resource driverClassName="com.mysql.jdbc.Driver" maxActive="120" maxWait="5000" maxldle="10" name="app" type="javax.sql.DataSource" url="jdbc:mysql://127.0.0.1:3306/goldApp?allowMultiQueries=true" username="root" password="123456"/>

jndi Resoure

  3.对于第”2”点的说明:name表示为jndi的名字, driverClassName是使用的驱动类,url当然就是连接相关信息,username是登录数据库的用户名,password是数据库密码。

  4.执行好第”2”步过后,要做的事情:在你的spring配置文件中,加入引入jndi的bean,如下:

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName">
            <value>java:comp/env/app</value>
        </property>
</bean>

jndi spring Bean

  5.对于第“4”点的说明:

    在value中java:comp/env/是前缀,app帮是content.xml中配置的jndi的名字。

三、在MATA-INFO 文件下加入Content.xml方式,让项目在部署时动态为tomcat加上jndi数据源

  1.首先,在MATA-INFO下建文件: Context.xml

  文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<Context>
    <Resource
        driverClassName="com.mysql.jdbc.Driver"
        maxActive="120"
        maxWait="5000"
        maxldle="10"
        name="app"
        type="javax.sql.DataSource"
        url="jdbc:mysql://192.168.10.105:3306/springsecurity?allowMultiQueries=true"
        username="root"
        password="123456"
    />
</Context>

MATA-INFO Context内容

  2.说明:在mata-info下加入此文件后,然后在spring中采用使用jndi的方式引用数据库即可。这种的好处是。它在你发布项目的时候,会动态为你在tomcat的配置文件中加上数据源信息,所以就不用我们每次都手动到content.xml文件加入配置了。注意:动态加的数据源信息在servce.xml中。

时间: 2024-12-29 10:38:45

为tomcat动态添加jndi数据源信息的相关文章

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

在Tomcat配置JNDI数据源的三种方式 分类: java进阶2012-07-01 10:24 18328人阅读 评论(0) 收藏 举报 tomcatjdbcweblogicmysqlbean测试 目录(?)[+] 在我过去工作的过程中,开发用服务器一般都是Tomcat 数据源的配置往往都是在applicationContext.xml中配置一个dataSource的bean 然后在部署时再修改JNDI配置 我猜是因为Tomcat的配置需要改配置文件 不像JBoss,Weblogic等服务器在

tomcat + JNDI 数据源的简单示例

今天是实习生入职第二天,分配了一个任务,写一个tomcat下配置JNDI数据源的说明文档,因为之前没接触过(一直使用的是C3P0连接池),所以踩了很多坑,现在总结出一个简单的小示例,以作记录 首先说,JDBC(Java DataBase Connectivity)与JNDI(Java Naming and Directory Interface)的区别: JDBC以一种统一的方式来对各种各样的数据库进行存取,为开发人员隐藏了不同数据库的不同特性,开发人员可以通过一些简单的配置就可以直接调用连接而

Eclipse +Tomcat配置JNDI数据源

以下是具体配置的步骤: 1.首先配置Tomcat下的jndi数据源.具体存放目录apache-tomcat-7.0.59\conf\Catalina\localhost 下 osh.xml <?xml version='1.0' encoding='utf-8'?> <Context docBase="G:\sbwork\oshome\WebContent" reloadable="false" path="/osh">

SpringBoot运行时动态添加数据源

此方案适用于解决springboot项目运行时动态添加数据源,非静态切换多数据源!!! 一.多数据源应用场景: 1.配置文件配置多数据源,如默认数据源:master,数据源1:salve1...,运行时动态切换已配置的数据源(master.salve1互相切换),无法在运行时动态添加配置文件中未配置的数据源. 2.配置一个默认数据源,运行时动态添加新数据源使用(本博客适用于此场景) 二.解决方案: Spring提供了AbstractRoutingDataSource用于动态路由数据源,第一种场景

JNDI学习总结(二)——Tomcat下使用C3P0配置JNDI数据源

一.C3P0下载 C3P0下载地址:http://sourceforge.net/projects/c3p0/files/?source=navbar 下载完成之后得到一个压缩包. 二.使用C3P0配置JNDI数据源 Tomcat6.x中配置JNDI数据源时默认使用的是Tomcat6.x自带的DBCP连接池,Tomcat6.x使用DBCP连接池配置JNDI数据源如下: 1 <Resource 2 name="oracleDataSource" 3 auth="Conta

Tomcat配置JNDI数据源

本文将介绍Tomcat配置JNDI数据源的方法,主要分为配置局部数据源(仅供单个应用使用)和全局数据源(所有用该Tomcat的应用都可以使用) 一.思考 从我们学习Web开发以来,我们都是通过程序代码来实现数据库的访问的.从一开始直接将数据库配置信息写在代码中,到后来将配置信息抽取出来写在了Properties文件中,我们访问数据库的代码更加精简. 而通过JNDI方式访问数据库则更为直接,JNDI连接数据库的方式直接将数据库信息放在Tomcat中,而项目代码里直接通过JNDI技术就可以得到数据源

JNDI学习总结(三)——Tomcat下使用Druid配置JNDI数据源

com.alibaba.druid.pool.DruidDataSourceFactory实现了javax.naming.spi.ObjectFactory,可以作为JNDI数据源来配置. 一.下载Druid的jar包 下载地址:http://mvnrepository.com/artifact/com.alibaba/druid/1.0.9,如下图所示: druid.jar依赖log4j的jar包,所以还需要下载log4j的jar包. log4j的下载地址如下:http://mvnreposi

Tomcat 6 JNDI数据源详解

数据库连接池这个概念应该都不陌生,在Java中连接池也就是数据库的连接池,它是一种采用连接复用的思想避免多次连接造成资源的浪费机制. 最常见的连接池就是DBCP和C30P了,在tomcat中默认使用的DBCP的连接池,在Hibernate中则默认使用的是C30P.他们的区别对于使用者来说最明显的就是,默认情况下DBCP不提供空闲连接的释放,需要手动开启. 下面介绍下Tomcat中数据连接池的配置及使用. 介绍 本篇依赖一个概念——JNDI,可以参考前面的博客:JNDI资源详解. 对于JNDI,可

Tomcat下使用c3p0配置jndi数据源

下载c3p0包: 下载地址:https://sourceforge.net/projects/c3p0/files/?source=navbar 解压后得到包:c3p0-0.9.2.jar,mchange-commons-java-0.2.11.jar 下载mysql包: 下载地址:http://download.csdn.net/download/u010802461/9579306 解压后得到包:mysql-connector-java-5.1.39-bin.jar(笔者这里没有是因为我将包