设为首页 收藏本站
查看: 440|回复: 0

[经验分享] 在Tomcat配置JNDI数据源的三种方式

[复制链接]
发表于 2017-2-2 09:28:57 | 显示全部楼层 |阅读模式
在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下测试通过,可以访问数据库




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


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

第二步,找到要应用此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" />

 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-336391-1-1.html 上篇帖子: tomcat下使用cronolog对catalina.out日志文件分割 下篇帖子: tomcat的maxThreads、acceptCount(最大线程数、最大列队数
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表