重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
配置Tomcat的JNDI数据源,是个很“古老”的话题了,网上可以查到N多详解,故不再过多阐述。Tomcat的官方文档里的说明算是全面了,如果你阅读英文无障碍的话,那么可以拜读官方文档。清楚地说明了JNDI数据源的配置手段。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、虚拟空间、营销软件、网站建设、伊宁网站维护、网站推广。Tomcat配置JNDI数据源
我在这里想提及的是在配置过程中,遇见的“特殊状况”。我选择的是单个应用配置数据源的“手段”,恰巧官网文档中有Mysql的示例,我就拿来用了。
在应用的根目录下,创建META-INF目录,在目录里创建context.xml文件,贴入如下的配置,修改相关属性。
关于上面的代码,官网的原话是“Configure the JNDI DataSource in Tomcat by adding a declaration for your resource to yourContext”。所谓“狡兔三窟”,Tomcat中关于Context的配置,随着版本的不同,可以有很多种!那么问题就来了,到底配到哪个Context里呢?有这个疑惑,说明我们还对Context的理解不够透彻,而在Tomcat文档配置数据源之前有段话已经进行了很好的“免责声明”了。所以可以查找相关资料深入了解Context。
我选用的是很多种的一种,在META-INF中使用了context.xml,然后在web.xml文件中再配置如下。
resource-ref中的配置项的值,应该与Context中Resource的属性值是一一对应的!到此为止,JNDI数据源的基础配置已经完成,可以使用了。web.xml这段配置不配照样可以使用,这个本人还没有摸透是神马原因,摸透后会后续发博文说明。
好,这样的配置在本机的开发环境上是运行的“如鱼得水”的。但是,在往服务器上部署后运行时,问题来了,提示“Cannot create JDBC driver of class for connect URL null, cause: java.sql.SQLException: No suitable driver”。网上搜索后,关于这个问题的原因最常见的是配置有问题。
我的这种情况,原因不是常见的那种,而是在与项目在部署时,配置了虚拟主机,即在Tomcat的server.xml中添加了Host节点,而项目需要部署在这个虚拟主机里,关键点在于Host中还添加Context节点,主要目的在于设置项目的path(这里声明这种配置不是我要干的)。这样原因在于,如果选用在Host节点下添加Context的方式来部署项目的话,那么项目里的context.xml里的配置是不起作用的!如果你部署项目选用的是在conf里配置context文件方式或是直接将项目放进webapps项目部署目录里,那么META-INF中context.xml配置是管用的!
说到这里你是否很是迷惑了,OK,我这里提示几个解惑的要点,有兴趣的可以自己去解惑。
1. 了解Tomcat的部署方式。
2. 了解Tomcat的Context作用。
如果以上两点你理解了,在遇到问题时,相信你可以做出很快的反应和对策。
我提到的出错情况,鉴于不能去大动某人之前的配置,我采用了保守“治疗”手段,将项目里META-INF中context.xml里的数据源配置剪切出来,贴到server.xml文件Host节点下的Context里即可正常运行了。