resource-ref in web.xml,Why!

   在上一篇配置Tomcat数据源时遗留一个问题,就是在web.xml中的<resource-ref>配置可有可无,但是为什么?在网上搜索了许久,正面直接了当回答问题的没有几个,无奈读取英文文档,在"JNDI Resources How-To"一章节有所提及,下面将我的理解记录如下。

    使用JNDI配置数据源,可以在web.xml里进行定义,例如<resource-ref>,也可以在Context下进行定义,例如<Resource/>,如下配置。

<resource-ref>
  <res-ref-name>
    jdbc/EmployeeDB
  </res-ref-name>
  <res-type>
    javax.sql.DataSource
  </res-type>
  <res-auth>
    Container
  </res-auth>
</resource-ref>

    OK,说到这儿,我的用词是可以,也可以。就是按照文档说明,这两个是二选一的。那么应该有人立马就反驳了,在Context下配置<Resource />,不在web.xml里加<resource-ref>可以,反之则不可行的,应该会出现"Cannot create JDBC driver of class for connect URL null"吧!

    没错!确实会报错。可是,Why?先来看一段文档中的说明。讲的大概意思是,如果没有更进一步的设置需要,那么Tomcat会使用web.xml中的配置信息来创建资源啦!我们上面提到的报错,恰恰不巧,在配置数据源时需要指定driverClassName吧,需要指定最大等待时间吧,等等!那么web.xml里的配置项已经无法满足配置数据源的需求了,所以,正如下面的描述,一些特别的选项不能在web.xml配置,“转战”Context。在Context里配置<Resource/>才是有效的!

181033_icj5_992498.png

181848_yJxU_992498.png

    那么我之前一直有个疑惑,既然Context配置数据源就可以工作了,为什么Tomcat的文档里的示例还指导我们在web.xml加段配置呢?不累吗?我想文档里有句话应该可以给我一个合理交代了吧!“to document”->用文件说明,我个人认为在web.xml里的<resource-ref>配置,仅仅起到说明作用,说明这个Web应用引用了哪些资源!

182010_6fdC_992498.png

    

转载于:https://my.oschina.net/angerbaby/blog/362429

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值