分享

resource

 藏经阁_苍穹 2015-11-25

   在上一篇配置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/>才是有效的!

resource-ref in web.xml,Why!

resource-ref in web.xml,Why!

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

resource-ref in web.xml,Why!

    

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多