网络运营 > 服务器 > tomcat

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

146人参与2021-05-27

在我过去工作的过程中,开发用服务器一般都是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:///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数据源内容请搜索移动技术网以前的文章或继续浏览下面的相关文章希望大家以后多多支持移动技术网!

您对本文有任何疑问!!点此进行留言回复

推荐阅读

猜你喜欢

intellij idea 使用Tomcat部署的项目位置在哪

01-27

Tomcat 7通过设置不同的端口部署两个项目

04-17

一文搞懂如何部署启动多个tomcat并移植项目

06-20

Tomcat 日志切割(logrotate)详细介绍

04-17

解决Eclipse最新版无法使用Tomcat插件问题

05-28

Tomcat 发布程序使用cmd查看端口占用、相应进程、杀死进程等的命令

04-17

Linux 中Tomcat远程调试代码的实现方法

05-28

tomcat内存溢出问题解决经历

03-09

热门评论