zoukankan      html  css  js  c++  java
  • 在Tomcat配置JNDI数据源的三种方式

     

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

    分类: java进阶
     

    目录(?)[+]

     

    在我过去工作的过程中,开发用服务器一般都是Tomcat

    数据源的配置往往都是在applicationContext.xml中配置一个dataSource的bean

    然后在部署时再修改JNDI配置

    我猜是因为Tomcat的配置需要改配置文件

    不像JBoss,Weblogic等服务器在管理界面可以直接添加JNDI数据源

    也很少人去研究它的配置

    最近做了个小项目,发布版本的时候都是通过ant编译成jar包之后丢给测试

    测试是大爷,教他修改数据源了还是当没听到

    周末闲来无聊,看了一些Tomcat配置的教程,下面做一些总结

    注:如果你的工程是直接丢在webapps下面的,server.xml中就没有工程对应的Context节点

    更新:由于之前有些配置来自网络,不太好用,作了一些更新

    对每种方法作了一些个人评价

    PS:以下配置在apache-tomcat-6.0.35下测试通过,可以访问数据库

    第一种,单个应用独享数据源

    就一步,找到Tomcat的server.xml找到工程的Context节点,添加一个私有数据源

    Xml代码  收藏代码
    1. <Context docBase="WebApp" path="/WebApp" reloadable="true" source="org.eclipse.jst.jee.server:WebApp">  
    2. <Resource  
    3.     name="jdbc/mysql"   
    4.     scope="Shareable"   
    5.     type="javax.sql.DataSource"  
    6.     factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"  
    7.     url="jdbc:mysql://localhost:3306/test"  
    8.     driverClassName ="com.mysql.jdbc.Driver"  
    9.     username="root"  
    10.     password="root"  
    11. />  
    12. </Context>  

    优点:简单

    缺点:重用性差

    第二种,配置全局JNDI数据源,应用到单个应用

    分两步

    第一步, 找到Tomcat的server.xml中GlobalNamingResources节点,在节点下加一个全局数据源

    Xml代码  收藏代码
    1. <Resource  
    2.     name="jdbc/mysql"   
    3.     scope="Shareable"   
    4.     type="javax.sql.DataSource"  
    5.     factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"  
    6.     url="jdbc:mysql://localhost:3306/test"  
    7.     driverClassName ="com.mysql.jdbc.Driver"  
    8.     username="root"  
    9.     password="root"  
    10. />  

    第二步,找到要应用此JNDI数据源的工程Context节点,增加对全局数据源的引用ResourceLink 

    Xml代码  收藏代码
    1. <Context docBase="WebApp" path="/WebApp" reloadable="true">  
    2.     <ResourceLink global="jdbc/mysql" name="jdbc/mysql" type="javax.sql.DataSource" />  
    3. </Context>  

    优点:重用性,可控性

    缺点:配置相对第三种方法要繁琐一点,每个工程都得配

    第三种,配置全局JNDI数据源,应用到所有Tomcat下部署的应用

    也分两步

    第一步

        参考第二种的第一步

    第二步,找到Tomcat的context.xml,在Context节点下加一个ResourceLink节点对第一步配置的数据源进行引用

    这个XML配置文件的根节点就是<Context>

    Xml代码  收藏代码
    1. <Context>  
    2.     <ResourceLink global="jdbc/mysql" name="jdbc/mysql" type="javax.sql.DataSource" />  
    3.    <WatchedResource>WEB-INF/web.xml</WatchedResource>  
    4. <Context>  

    优点:重用性,一次性到位

    缺点:没有可控性

    Spring对JNDI数据源的引用

    在applicationContext.xml中加一个bean,替代原来的dataSource

    Xml代码  收藏代码
    1. <jee:jndi-lookup id="dataSource" jndi-name="jdbc/mysql" />  

    C3P0数据源的配置

    type和factory的值发生变化

    username=>user

    url=>jdbcUrl

    driverClassName=>driverClass

    Xml代码  收藏代码
    1. <Resource name="jdbc/mysql_c3p0" scope="Shareable"  
    2.     type="com.mchange.v2.c3p0.ComboPooledDataSource"   
    3.     factory="org.apache.naming.factory.BeanFactory"  
    4.     jdbcUrl="jdbc:mysql://localhost:3306/test" driverClass="com.mysql.jdbc.Driver"  
    5.     user="root" password="root" />  
     更多详细内容请参考:java进阶网  www.javady.com
  • 相关阅读:
    升级windows 11小工具
    windows 10更新升级方法
    您需要了解的有关 Oracle 数据库修补的所有信息
    Step by Step Apply Rolling PSU Patch In Oracle Database 12c RAC Environment
    Upgrade Oracle Database Manually from 12.2.0.1 to 19c
    如何应用版本更新 12.2.0.1.210420(补丁 32507738 – 2021 年 4 月 RU)
    xtrabackup 安装、备份和恢复
    Centos_Lvm expand capacity without restarting CentOS
    Centos_Lvm_Create pv vg lv and mount
    通过全备+relaylog同步恢复被drop的库或表
  • 原文地址:https://www.cnblogs.com/wzhanke/p/4844849.html
Copyright © 2011-2022 走看看