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