Spring + Tomcat5/6 + ConnectionPool的配置
Tomcat5 及 Tomcat6 下CP配置。
主要是根据MLDN的一个实例进行配置的。实例中用的是Tomcat5.5,所以他的CP配置如下:
第一:将jdbc驱动的jar包,如:MySQL、Oracle的jdbc驱动,拷贝到tomcat中lib下。
注意:必须是tomcat中lib下,如:D:\Tomcat 6.0\lib,但不能是项目中的WEB-INF/lib下,因为这时tomcat解析不到此类目录。
第二:在Tomcat的安装目录下conf下找到server.xml,在<host></host>之间加上如下代码:
第三:在Spring的配置文件applicationContext.xml中加上如下代码:
而我用的Tomcat是6.0.18,在根据这个配置后就会出现javax.naming.NameNotFoundException: Name jdbc is not bound in this Context的错误。原因是,Tomcat5和Tomcat6的配置有所区别:
第一:将jdbc驱动的jar包,拷贝到Tomcat的lib下
第二:在tomcat中conf下的context.xml文件中<context>与</context>之间加入以下部分:
第三:在Spring的配置文件applicationContext.xml中加上如下代码:
这样,Tomcat6下的CP才能正常的运行起来。
主要是根据MLDN的一个实例进行配置的。实例中用的是Tomcat5.5,所以他的CP配置如下:
第一:将jdbc驱动的jar包,如:MySQL、Oracle的jdbc驱动,拷贝到tomcat中lib下。
注意:必须是tomcat中lib下,如:D:\Tomcat 6.0\lib,但不能是项目中的WEB-INF/lib下,因为这时tomcat解析不到此类目录。
第二:在Tomcat的安装目录下conf下找到server.xml,在<host></host>之间加上如下代码:
1
<
Context
path
="/zhinangtuan"
docBase
="F:\Eclipse\MyZNTProject\MyZhiNangTuanDemo\WebRoot"
2 debug ="5" reloadable ="true" crossContext ="true" >
3
4 < Logger className ="org.apache.catalina.logger.FileLogger"
5 prefix ="localhost_MysqlTest_log." suffix =".txt"
6 timestamp ="true" />
7
8 < Resource name ="jdbc/mldn" auth ="Container" type ="javax.sql.DataSource" />
9
10 < ResourceParams name ="jdbc/mldn" >
11 < parameter >
12 < name > factory </ name >
13 < value > org.apache.commons.dbcp.BasicDataSourceFactory </ value >
14 </ parameter >
15 < parameter >
16 < name > maxActive </ name >
17 < value > 100 </ value >
18 </ parameter >
19 < parameter >
20 < name > maxIdle </ name >
21 < value > 30 </ value >
22 </ parameter >
23 < parameter >
24 < name > maxWait </ name >
25 < value > 5000 </ value >
26 </ parameter >
27 < parameter >
28 < name > username </ name >
29 < value > root </ value >
30 </ parameter >
31 < parameter >
32 < name > password </ name >
33 < value > mysqladmin </ value >
34 </ parameter >
35 < parameter >
36 < name > driverClassName </ name >
37 < value > org.gjt.mm.mysql.Driver </ value >
38 </ parameter >
39 < parameter >
40 < name > url </ name >
41 < value > jdbc:mysql://localhost:3306/mldn </ value >
42 </ parameter >
43 </ ResourceParams >
44 </ Context >
第一部分为项目的发布路径。其他的就是数据库的配置了。
2 debug ="5" reloadable ="true" crossContext ="true" >
3
4 < Logger className ="org.apache.catalina.logger.FileLogger"
5 prefix ="localhost_MysqlTest_log." suffix =".txt"
6 timestamp ="true" />
7
8 < Resource name ="jdbc/mldn" auth ="Container" type ="javax.sql.DataSource" />
9
10 < ResourceParams name ="jdbc/mldn" >
11 < parameter >
12 < name > factory </ name >
13 < value > org.apache.commons.dbcp.BasicDataSourceFactory </ value >
14 </ parameter >
15 < parameter >
16 < name > maxActive </ name >
17 < value > 100 </ value >
18 </ parameter >
19 < parameter >
20 < name > maxIdle </ name >
21 < value > 30 </ value >
22 </ parameter >
23 < parameter >
24 < name > maxWait </ name >
25 < value > 5000 </ value >
26 </ parameter >
27 < parameter >
28 < name > username </ name >
29 < value > root </ value >
30 </ parameter >
31 < parameter >
32 < name > password </ name >
33 < value > mysqladmin </ value >
34 </ parameter >
35 < parameter >
36 < name > driverClassName </ name >
37 < value > org.gjt.mm.mysql.Driver </ value >
38 </ parameter >
39 < parameter >
40 < name > url </ name >
41 < value > jdbc:mysql://localhost:3306/mldn </ value >
42 </ parameter >
43 </ ResourceParams >
44 </ Context >
第三:在Spring的配置文件applicationContext.xml中加上如下代码:
1
<
bean
id
="dataSource"
2 class ="org.springframework.jndi.JndiObjectFactoryBean"
3 destroy-method ="close" >
4 < property name ="jndiName" >
5 < value > java:comp/env/jdbc/mldn </ value >
6 </ property >
7 </ bean >
2 class ="org.springframework.jndi.JndiObjectFactoryBean"
3 destroy-method ="close" >
4 < property name ="jndiName" >
5 < value > java:comp/env/jdbc/mldn </ value >
6 </ property >
7 </ bean >
而我用的Tomcat是6.0.18,在根据这个配置后就会出现javax.naming.NameNotFoundException: Name jdbc is not bound in this Context的错误。原因是,Tomcat5和Tomcat6的配置有所区别:
第一:将jdbc驱动的jar包,拷贝到Tomcat的lib下
第二:在tomcat中conf下的context.xml文件中<context>与</context>之间加入以下部分:
1
<
Resource
name
="jdbc/mldn"
2 auth ="Container"
3 type ="javax.sql.DataSource"
4 factory ="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
5 driverClassName ="com.mysql.jdbc.Driver"
6 url ="jdbc:mysql://localhost:3306/mldn?useUnicode=true&characterEncoding=utf-8"
7 username ="root"
8 password ="123"
9 maxActive ="100"
10 maxIdle ="30"
11 maxWait ="10000" />
同时在项目的web.xml中加入如下代码(网上说可以加也可以不加)
2 auth ="Container"
3 type ="javax.sql.DataSource"
4 factory ="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
5 driverClassName ="com.mysql.jdbc.Driver"
6 url ="jdbc:mysql://localhost:3306/mldn?useUnicode=true&characterEncoding=utf-8"
7 username ="root"
8 password ="123"
9 maxActive ="100"
10 maxIdle ="30"
11 maxWait ="10000" />
1
<
resource-ref
>
2 < description > DB Connection </ description >
3 < res-ref-name > jdbc/mldn </ res-ref-name >
4 < res-type > javax.sql.DataSource </ res-type >
5 < res-auth > Container </ res-auth >
6 </ resource-ref >
2 < description > DB Connection </ description >
3 < res-ref-name > jdbc/mldn </ res-ref-name >
4 < res-type > javax.sql.DataSource </ res-type >
5 < res-auth > Container </ res-auth >
6 </ resource-ref >
第三:在Spring的配置文件applicationContext.xml中加上如下代码:
1
<
bean
id
="dataSource"
2 class ="org.springframework.jndi.JndiObjectFactoryBean"
3 destroy-method ="close" >
4 < property name ="jndiName" >
5 < value > java:comp/env/jdbc/mldn </ value >
6 </ property >
7 </ bean >
2 class ="org.springframework.jndi.JndiObjectFactoryBean"
3 destroy-method ="close" >
4 < property name ="jndiName" >
5 < value > java:comp/env/jdbc/mldn </ value >
6 </ property >
7 </ bean >
这样,Tomcat6下的CP才能正常的运行起来。