使用Tomcat JNDI数据源与Spring一起使用步骤如下:

1.将数据库驱动复制到Tomcat的lib文件夹下面

2.配置Tomcat的server.xml配置文件,在GlobalNamingResources节点下面添加一个Resource节点,如下:

<GlobalNamingResources>
    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users
    -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
              <!--
                |- name:表示以后要查找的名称。通过此名称可以找到DataSource,此名称任意更换,但是程序中最终要查找的就是此名称,
                         为了不与其他的名称混淆,所以使用jdbc/oracle,现在配置的是一个jdbc的关于oracle的命名服务。
                |- auth:由容器进行授权及管理,指的用户名和密码是否可以在容器上生效
                |- type:此名称所代表的类型,现在为javax.sql.DataSource
                |- maxActive:表示一个数据库在此服务器上所能打开的最大连接数
                |- maxIdle:表示一个数据库在此服务器上维持的最小连接数
                |- maxWait:最大等待时间。10000毫秒
                |- username:数据库连接的用户名
                |- password:数据库连接的密码
                |- driverClassName:数据库连接的驱动程序
                |- url:数据库连接的地址
               -->
    <Resource name="jdbc/mysql"
              auth="Container"
              type="javax.sql.DataSource"
              maxAction="100"
              maxIdle="30"
              maxWait="1000"
              username="root"
              password="db861110"
              driverClassName="com.mysql.jdbc.Driver"
              url="jdbc:mysql://localhost:3306/Restaurant?useUnicode=true&characterEncoding=UTF-8" />
  </GlobalNamingResources>

3.配置context.xml文件,在Context节点下面添加一个ResourceLink节点,这个name要跟server.xml里面配置的Resource的name属性保持一致。

<ResourceLink global="jdbc/mysql" name="jdbc/mysql" type="javax.sql.DataSource"/>

4.在工程内配置config.properties文件,如下:

dataSource.resourceRef=true
dataSource.jndiName=java:comp/env/jdbc/mysql

5.引入配置文件并创建数据源

 <!--引入配置文件-->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:config.properties</value> </list> </property> </bean> <bean id="datasource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="${dataSource.jndiName}"></property> <property name="resourceRef" value="${dataSource.resourceRef}"></property> </bean>

 

这样就配置好了,工程就可以使用这个JNDI数据源了。