关闭

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

2462人阅读 评论(0) 收藏 举报

在我过去工作的过程中,开发用服务器一般都是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
0
0
查看评论

spring 数据源JNDI 基于tomcat mysql配置

关键代码 java:comp/env/jdbc/ghdb true 全局jndi配置 Tomcat7\conf\context.xml下新增如下代码 <Resource auth="Container" driverCl...
  • snails_zx
  • snails_zx
  • 2016-02-18 11:36
  • 24260

SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)

Hibernate工作原理及为什么要用? 原理: 1.通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件 2.由hibernate.cfg.xml中的读取并解析映射信息 3.通过config.buildSessionFac...
  • gw140624
  • gw140624
  • 2017-01-05 14:13
  • 616

IDEA+jetty配置jndi数据源

1.在maven项目的pom.xml中配置jetty插件: org.mortbay.jetty maven-jetty-plugin 6.1.26 2.在resources下配置jetty.xml //跟eclipse的区别      &#...
  • Cherry_tly
  • Cherry_tly
  • 2015-09-07 11:57
  • 1716

Tomcat配置JNDI数据源

1、非全局jndi配置 创建META-INF目录,在此目录下创建一个context.xml文件,里面的内容如下: <Resource name="jdbc/core-db" auth="Container" type=&qu...
  • u011666411
  • u011666411
  • 2016-08-24 10:29
  • 644

Tomcat配置JNDI数据源-配置server.xml

假设应用程序目录是JSP-->Context path="/JSP" docBase="JSP">   使用数据库名为GUESTBOOK-->   Resourc...
  • daryl715
  • daryl715
  • 2007-10-15 13:26
  • 2785

Tomcat8.0配置JNDI数据源完整例子

jndi配置 :此种配置需要在Tomcat的server.xml中和context.xml中配置数据源,在项目中引用。  前言:需要在tomcat下加入数据库连接的jar包,相关包的下载地址见下方(ojdbc14;c3p0数据源): http://download...
  • qq_35624642
  • qq_35624642
  • 2017-03-11 22:02
  • 2526

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

在我过去工作的过程中,开发用服务器一般都是Tomcat 数据源的配置往往都是在applicationContext.xml中配置一个dataSource的bean 然后在部署时再修改JNDI配置 我猜是因为Tomcat的配置需要改配置文件 不像JBoss,Weblogic等服务器在管理界面可...
  • middle544291353
  • middle544291353
  • 2017-01-15 12:09
  • 1926

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

在我过去工作的过程中,开发用服务器一般都是Tomcat数据源的配置往往都是在applicationContext.xml中配置一个dataSource的bean然后在部署时再修改JNDI配置我猜是因为Tomcat的配置需要改配置文件不像JBoss,Weblogic等服务器在管理界面可以直接添加JND...
  • dyllove98
  • dyllove98
  • 2012-07-01 10:24
  • 57232

Tomcat配置数据源(JNDI方式)

一、直连接数据库 1 Java 连接 Oralce Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url="jdbc:oracle:thin:@localhos...
  • CYXLZZS
  • CYXLZZS
  • 2012-03-14 14:29
  • 28073

tomcat下jndi的三种配置方式

jndi(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。命名服务将名称和对象联系起来,使得我们可以用名称 访问对象。目录服务是一种命名服务,在这种服务里,对象不但有名称,还有属性
  • lgm277531070
  • lgm277531070
  • 2011-08-23 11:44
  • 67428
    个人资料
    • 访问:9398313次
    • 积分:78798
    • 等级:
    • 排名:第21名
    • 原创:264篇
    • 转载:2887篇
    • 译文:3篇
    • 评论:801条
    文章分类