[Java教程]Spring通过JNDI获取在Tomcat容器中配置的C3P0数据源
0 2014-06-12 16:00:46
开始直接使用Spring通过JNDI获取在Tomcat容器中配置的数据源,Tomcat默认的应该是DBCP连接池,没问题,一切OK,由于Hibernate和Spring都推荐使用C3P0连接池,所以就尝试配置一下,没想到整了半下午,才搞定配置,惭愧!网上的内容眼花缭乱,鱼龙混杂,不如自己靠谱!直接上代码,后面附出现的问题!
配置两个地方:
1.Tomcat\conf下的context.
2.Spring的配置文件
提示:
1.如果要优化连接池的性能,要对参数进行设置,具体的要看官网!官网最靠谱!官网是王道!
C3P0:http://www.mchange.com/projects/c3p0/
DBCP:http://commons.apache.org/proper/commons-dbcp/
2.C3P0的jar包要放在WEB-INF\lib中,也要放到Tomcat\lib包中
3.通过JNDI配置可以使项目与不同数据库的配置达到解耦的目的
context.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
username="scott" password="tiger" driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:orcl"
testOnBorrow="true"
testOnReturn="true"
testWhileIdle="true"
validationQuery="SELECT COUNT(*) FROM DUAL"
maxIdle="30"
maxWait="5000"
maxActive="100"
initialSize="10"/>
user="scott" password="tiger" driverClass="oracle.jdbc.driver.OracleDriver"
jdbcUrl="jdbc:oracle:thin:@localhost:1521:orcl"
maxPoolSize="30"
minPoolSize="1"
initialPoolSize="5"
acquireIncrement="2"
idleConnectionTestPeriod="60"
maxIdleTime="60"
factory="org.apache.naming.factory.BeanFactory"
type="com.mchange.v2.c3p0.ComboPooledDataSource"/>
applicationContext.1
2
3
4
5
6
7
8
9
10
11
12
13
class="org.springframework.jndi.JndiObjectFactoryBean">
java:comp/env/jdbc/DB
出现的问题:1.javax.naming.NamingException: No set method found for property: username
解决方法:
context.
2.org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'com.mchange.v2.c3p0.mbean.C3P0PooledDataSource' to
required type 'javax.sql.DataSource' for property 'dataSource'
解决方法:
context.
其它问题就记不太清了!能用就好,有时间再研究优化配置及内部实现原理!
另:发现网上好多贴子说,要配置三处,还有一处是web.
本文网址:http://www.shaoqun.com/a/93835.html
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。
Spring
0