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

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

    在我过去工作的过程中,开发用服务器一般都是Tomcat,数据源的配置往往都是在applicationContext.xml中配置一个dataSource的bean,然后在部署时再修改JNDI配置。我猜是因为Tomcat的配置需要改配置文件,不像JBoss,Weblogic等服务器在管理界面可以直接添加JNDI数据源,也很少人去研究它的配置。最近做了个小项目,发布版本的时候都是通过ant编译成jar包之后丢给测试,测试是大爷,教他修改数据源了还是当没听到。周末闲来无聊,看了一些Tomcat配置的教程,下面做一些总结。

 

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

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

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

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

 

一、JNDI数据源配置

(1)单个应用独享数据源

就一步,找到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>  

优点:简单

缺点:重用性差


(2)配置全局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"  
/> 

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

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

优点:重用性,可控性

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


(3)配置全局JNDI数据源,应用到所有Tomcat下部署的应用

也分两步

第一步

    参考(2)的第一步

第二步,找到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" />  
 更多详细内容请参考:java进阶网  www.javady.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

毕业设计word 表格标题 图表标题

图一模一样 生成目录 ************************************************************************************************************************* 生成表目录和图目录 *********************************************************************************************…

php打印 二维数组,PHP中遍历二维数组_以不同形式的输出操作实例

//定义二维索引数组$arr array(array("101","李军","男","1976-02-20","95033"),array("103","陆君","男","1974-06-03","95031"),array("105","匡明&q…

Ubuntu 16.04下ASP.NET Core+ MySql + Dapper在 Jexus、nginx 下的简单测试

一、环境及工具 1、服务器 VirtualBox5.1.4 安装 Ubuntu Server 16.04 amd64MySql Ver 14.14 Distrib 5.6.21Jexus 5.8.1nginx 1.10.0dotnet core 1.0.0-preview2-003121supervisor 3.2.1 2、开发环境 VS2015 Update 3DotNetCore.1.0.0-VS2015Tools.Preview2.0.1.exe 3、测试工…

jsp九大隐藏对象

转载自 jsp九大隐藏对象&#xfeff;&#xfeff;jsp内置对象&#xff08;隐藏对象&#xff09;&#xff1a;不加声明和创建就可以在jsp页面脚本中使用的成员对象。 内置对象类型作用域requestjavax.servlet.http.HttpServletRequestrequestresponsejavax.servlet.http.HttpS…

新闻发布项目——数据库脚本(直接导入即可)

数据库sql servel 2012版本&#xff0c;以下是脚本&#xff1a; USE [master] GO /****** Object: Database [newsDB] Script Date: 2016/11/24 19:48:46 ******/ CREATE DATABASE [newsDB]CONTAINMENT NONEON PRIMARY ( NAME NnewsDB, FILENAME NE:\第二期\第六本书使…

最新版Intellij IDEA视频教程 20170814

01课程介绍和软件安装.avi 02Intellij IDEA常用快捷键1132.avi 03Intellij IDEA安装Tomcat和Maven.avi 04Intellij IDEA使用Maven Helper插件分.avi 05Intellij IDEA中Git安装和使用.avi 06Intellij IDEA连接MySQL数据库.avi 07Intellij IDE使用GsonFormat转化json.avi …

Docker容器环境下ASP.NET Core Web API应用程序的调试

本文主要介绍通过Visual Studio 2015 Tools for Docker – Preview插件&#xff0c;在Docker容器环境下&#xff0c;对ASP.NET Core Web API应用程序进行调试。在自己做实验的过程中也碰到了一些问题&#xff0c;经过一些测试和搜索资料&#xff0c;基本解决了这些问题&#xf…

php 查看spl,PHP使用标准库spl实现的观察者模式示例

本文实例讲述了PHP使用标准库spl实现的观察者模式。分享给大家供大家参考&#xff0c;具体如下&#xff1a;前面使用纯php实现了一个观察者模式(php观察者模式)&#xff0c; 现在使用php标准库spl在次实现观察者模式&#xff0c;好处是&#xff1a;随意的生成您想使用的观察者&…

深入体验JavaWeb开发内幕——简述JSP中的自定义标签叫你快速学会

转载自 深入体验JavaWeb开发内幕——简述JSP中的自定义标签叫你快速学会自定义标签&#xff0c;顾名思义&#xff0c;就是自己定义的标签。那么我们为什么要自己定义一些标签呢&#xff1f; 我们知道&#xff0c;如果要在JSP中获取数据我们可以采用通过JSP的隐式对象request来…

ps查看所有php进程,ps命令就是最基本进程查看命令

1、ps是什么&#xff1f;要对进程进行监测和控制&#xff0c;首先必须要了解当前进程的情况,也就是需要查看当前进程&#xff0c;ps命令就是最基本进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸、哪些进程占用了过多的资源等…

如何测试微信应用号

每一次微信的动作都是商机&#xff0c;而随着微信应用号的即将面世&#xff0c;微信应用号的开发和测试又会成为一股新的风向。 其实经常有人问到微信服务号或者微信订阅号怎么测试的相关内容&#xff0c;可能总觉得比较缺乏技术含量不太想说&#xff0c;这次看了下应用号&…

git 拉代码

git clone 。。 拉取代码master git clone -b 分支名 。。。 拉取分支名 git——更新分支、提交代码、切换分支、合并分支 还是直接贴教程吧&#xff1a;https://git-scm.com/book/zh/v2 如何把本地idea上的项目上传到github上&#xff1a;https://www.cnblogs.com/…

javaweb学习总结(二十四)——jsp传统标签开发

转载自 javaweb学习总结(二十四)——jsp传统标签开发一、标签技术的API 1.1、标签技术的API类继承关系二、标签API简单介绍 2.1、JspTag接口JspTag接口是所有自定义标签的父接口&#xff0c;它是JSP2.0中新定义的一个标记接口&#xff0c;没有任何属性和方法。JspTag接口有Tag…

二级导航 sql php,帝国cms栏目导航调用之SQL语句调用一级栏目和二级栏目的方法...

帝国cms调用一级栏目及下面的二级栏目调用方法如下&#xff1a;SQL语句<?php $ecms_bq_sqlsys_ReturnEcmsLoopBq("select * from [!db.pre!]enewsclass where bclassid0 order by myorder limit 6",14,24,0);$bqno0;while($bqr$empire->fetch($ecms_bq_sql)){…

Java开发利器:IntelliJ IDEA的安装、配置与使用

1.尚硅谷-IDEA-IntelliJ IDEA的介绍和优势 2.尚硅谷-IDEA-版本介绍与安装前的准备 3.尚硅谷-IDEA-IDEA的卸载 4.尚硅谷-IDEA-IDEA的安装 5.尚硅谷-IDEA-安装目录和设置目录结构的说明 6.尚硅谷-IDEA-启动IDEA并执行HelloWorld 7.尚硅谷-IDEA-Module的使用 8.尚硅谷-IDEA…

开发者的利器:Docker 理解与使用

困扰写代码的机器难免会被我们安装上各种各样的开发工具、语言运行环境和引用库等一大堆的东西&#xff0c;长久以来不仅机器乱七八糟&#xff0c;而且有些相同的软件还有可能会安装不同的版本&#xff0c;这样又会导致一个项目正常运行了&#xff0c;却不小心破坏了另一个项目…

php环境搭建sqlserver,ThinkPHP5.0/5.1对接SQLServer数据库(宝塔环境)

SQLServer实际上是mssql&#xff0c;想要使用thinkphp的Db对象操作数据库前必须要在服务器上安装对应的扩展。宝塔面板的PHP安装路径为/www/server/php/ 且支持多个PHP版本共存&#xff0c;所以安装PHP扩展的方法与网上那些示例略有不同。下面是 PHP7.2 安装 pdo_sqlsrv5.6.0 扩…

<c:set>标签

转载自 <c:set> 标签 JSP 标准标签库 <c:set>标签用于设置变量值和对象属性。 <c:set>标签就是<jsp:setProperty>行为标签的孪生兄弟。 这个标签之所以很有用呢&#xff0c;是因为它会计算表达式的值&#xff0c;然后使用计算结果来设置 JavaBean 对…

layUI 日期组件单独使用 并且放大

日期类型 选择 layuI 的date 类型单独使用 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title>layDate快速使用</title><link rel"stylesheet" href"/layui/css/layui.css" media"all…

Opserver开源的服务器监控系统(ASP.NET)

Opserver是Stack Exchange下的一个开源监控系统,系统本身由C#语言开发的ASP.NET&#xff08;MVC&#xff09;应用程序&#xff0c;无需任何复杂的应用配置&#xff0c;入门很快。下载地址&#xff1a;https://github.com/opserver/Opserver。据说&#xff0c;国内腾讯公司内部也…