Spring + tomcat jndi配置
Spring+tomcat jndi的配置有几种方式:
一、jndi只供应用本身使用
1. spring配置加上如下片段
<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/mysql"/>
或者
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="java:comp/env/jdbc/mysql"></property> </bean>
2. 在项目的META-INFO 目录下添加context.xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?> <Context> <Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="root" password="root" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/dbname" /> </Context>
3. 在项目web.xml加入如下片段(非必须):
<resource-ref> <description>DB Connection</description> <res-ref-name>jdbc/mysql</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth>
</resource-ref>
二、 tomcat级别的全局的jndi配置
1. spring配置不变
<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/mysql"/>
或者
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="java:comp/env/jdbc/mysql"></property> </bean>
2. 在tomcat conf目录下,修改server.xml和context.xml
server.xml中加入如下代码
<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" />
<!--加入如下内容 --> <Resource name="jdbc/mysql" auth="Container"
type="javax.sql.DataSource" username="root"
password="root" url="jdbc:mysql://192.168.182.130:32771/dbname"
driverClassName="com.mysql.jdbc.Driver" initialSize="5"
maxWait="5000" maxActive="120" maxIdle="5"
validationQuery="select 1" poolPreparedStatements="true"/> </GlobalNamingResources>
context.xml 中加入如下代码
<ResourceLink global="jdbc/mysql" name="jdbc/mysql" type="javax.sql.DataSource" />
3. 重启tomcat服务这时jndi配置结束。
注意: 如果tomcat报Driver not foud exception,则说明tomcat 的lib目录下缺少连接数据库的驱动,根据所需驱动的不同,自行加入相应的jar包到tomcat lib目录即可。