使用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数据源了。