Tomcat下配置JNDI的三种方式

时间:2021-10-11 19:12:53

最近在整理项目上的配置文件,正好看到了数据源配置,想着配置方式有多种,便趁热打铁,记录下常规的Tomcat配置数据源的方式

1.单个工程配置

找到Tomcat下的server.xml文件,在Context节点下,添加一个私有数据源

<Context docBase="TestApp" path="/TestApp" reloadable="true" source="org.eclipse.jst.jee.server:TestApp">  
<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> 

这种配置方式虽然简单,但是重用性差

2.配置全局JNDI,并应用到单个项目上

第一步,找到Tomcat的server.xml中GlobalNamingResources节点,在该节点中添加一个全局JNDI配置

<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"  
/>

第二步,在server.xml中,找到此项目的Context节点,增加对全局数据源的引用Resource

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

此方法虽然可控,但还是得针对每个项目具体配置

 

3.配置全局JNDI数据源,应用到所有Tomcat下的应用中

第一步:参考第二种的第一步

第二步:在Tomcat的context.xml文件的Context节点下,加一个ResourceLink节点,并对第一步配置的数据源进行引用

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