Tomcat中配置JNDI数据源的三种方式小结

Tomcat中部署应用大概的可以分为两种方式,一种是直接把应用放到webapp目录下,这样当tomcat启动时会自动部署webapp下的应用;另一种方式是在Tomcat控制台中部署,部署方法可参考《Tomcat控制台操作及应用部署介绍》。需要注意的是,如果工程是直接放在webapp下来部署的,那么tomcat的server.xml中就没有工程对应的Context节点。

下面是Tomcat中配置JNDI数据源的三种方式总结:

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

找到Tomcat的server.xml文件,在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>

该方式的优点是:非常简单;缺点是:重用性差,由于是私有的,如果有多个应用,那么每一个应用都要在相应的Context节点中配置数据源信息,哪怕是同一个数据库,也无法共享配置。

(2)配置全局JNDI数据源,应用到单个应用

Step 1:找到Tomcat的server.xml文件,在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"  
/>

Step 2:同样在server.xml文件中,找到此应用对应的Context节点,然后增加对全局数据源的引用ResourceLink,参考配置如下:

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

该方式的优点是:重用性较强,如果有多个应用共享同一个数据源,那么不用在每一个应用中添加配置信息,只要添加一个对该全局数据源的引用即可;缺点:还是相对繁琐,仍然要对每个应用做一些配置。

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

Step 1:参考(2)中的Step 1,配置一个全局的数据源。

Step 2:找到Tomcat的Context.xml文件,在Context文件的Context节点下加一个ResourceLink节点对第一步配置的数据源进行引用,参考配置信息如下:

<Context>  
    <ResourceLink global="jdbc/mysql" name="jdbc/mysql" type="javax.sql.DataSource" />  
   <WatchedResource>WEB-INF/web.xml</WatchedResource>  
<Context>

该方式的优点是:重用性强;缺点是:缺乏可控性。

参考资料:

本文标题:Tomcat中配置JNDI数据源的三种方式小结

本文链接:http://yedward.net/?id=361

本文版权归作者所有,欢迎转载,转载请以文字链接的形式注明文章出处。

相关文章