• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Tomcat配置JNDI数据源的三种方式
    POST TIME:2021-10-16 16:15

    在我过去工作的过程中,开发用服务器一般都是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节点,添加一个私有数据源

    <Context docBase="WebApp" path="/WebApp" reloadable="true" source="org.eclipse.jst.jee.server:WebApp">  
    <Resource  
        name="jdbc/mysql"   
        scope="Shareable"   
        type="javax.sql.DataSource"  
        factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"  
        url="jdbc:mysql://localhost:3306/test"  
        driverClassName ="com.mysql.jdbc.Driver"  
        username="root"  
        password="root"  
    />  
    </Context>  
    

    优点:简单

    缺点:重用性差

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

    分两步

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

    <Resource  
        name="jdbc/mysql"   
        scope="Shareable"   
        type="javax.sql.DataSource"  
        factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"  
        url="jdbc:mysql://localhost:3306/test"  
        driverClassName ="com.mysql.jdbc.Driver"  
        username="root"  
        password="root"  
    />  
    <script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
    

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

    <Context docBase="WebApp" path="/WebApp" reloadable="true">  
        <ResourceLink global="jdbc/mysql" name="jdbc/mysql" type="javax.sql.DataSource" />  
    </Context>  

    优点:重用性,可控性

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

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

    也分两步

    第一步

        参考第二种的第一步

    第二步,找到Tomcat的context.xml,在Context节点下加一个ResourceLink节点对第一步配置的数据源进行引用
    这个XML配置文件的根节点就是<Context>

    <Context>  
        <ResourceLink global="jdbc/mysql" name="jdbc/mysql" type="javax.sql.DataSource" />  
       <WatchedResource>WEB-INF/web.xml</WatchedResource>  
    <Context>  
    

    优点:重用性,一次性到位
    缺点:没有可控性

    Spring对JNDI数据源的引用

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

    <jee:jndi-lookup id="dataSource" jndi-name="jdbc/mysql" />  
    

    C3P0数据源的配置

    type和factory的值发生变化

     username=>user

     url=>jdbcUrl

     driverClassName=>driverClass

    <Resource name="jdbc/mysql_c3p0" scope="Shareable"  
        type="com.mchange.v2.c3p0.ComboPooledDataSource"   
        factory="org.apache.naming.factory.BeanFactory"  
        jdbcUrl="jdbc:mysql://localhost:3306/test" driverClass="com.mysql.jdbc.Driver"  
        user="root" password="root" />  
    

    到此这篇关于Tomcat配置JNDI数据源的三种方式的文章就介绍到这了,更多相关Tomcat配置JNDI数据源内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    上一篇:如何使用shell在多服务器上批量操作
    下一篇:Tomcat中修改server.xml和content.xml后自动还原问题解决
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信