ssh使用tomcat中配置好的c3p0数据源

在tomcat的conf\Catalina\localhost\路径下建立项目对应的xml文件

具体内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/Village" docBase="D:\Workspaces\MyEclipse 10\webproject\Village\WebRoot"  reloadable= "true" privileged="true">

<Resource name="jdbc/village" auth="Container"	
		 type="com.mchange.v2.c3p0.ComboPooledDataSource"  
		factory="org.apache.naming.factory.BeanFactory"  
		driverClass="com.mysql.jdbc.Driver"  
                jdbcUrl="jdbc:mysql://localhost:3306/village"  
                user="root"  
                password="0510"  
                minPoolSize="10"  
                maxPoolSize="200"  
                maxIdleTime="1000" 
		idleConnectionTestPeriod="10"
		initialPoolSize="5" 
		/>
	
</Context>

Spring配置文件中加入引入数据源的配置:

 	 <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
  		<property name="jndiName"><value>java:comp/env/jdbc/village</value></property>
 	 </bean> 

在代码配置上只需做如上配置即可。

需要注意的是使用c3p0数据源需要引入相应的jar包:c3p0-0.9.2.1.jar 和 mchange-commons-java-0.2.3.4.jar。


在实际项目中,我按照如上配置好后,程序开始可以正常运行,但是过一段时间后便会不停的报如下错误:


 Illegal access: this web application instance has been stopped already.  Could not load com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask.  The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
java.lang.IllegalStateException
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1612)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
    at com.mchange.v2.resourcepool.BasicResourcePool.destroyResource(BasicResourcePool.java:980)
    at com.mchange.v2.resourcepool.BasicResourcePool.removeResource(BasicResourcePool.java:1406)
    at com.mchange.v2.resourcepool.BasicResourcePool.removeResource(BasicResourcePool.java:1378)
    at com.mchange.v2.resourcepool.BasicResourcePool.cullExpired(BasicResourcePool.java:1462)
    at com.mchange.v2.resourcepool.BasicResourcePool.access$1900(BasicResourcePool.java:32)
    at com.mchange.v2.resourcepool.BasicResourcePool$CullTask.run(BasicResourcePool.java:1937)
    at java.util.TimerThread.mainLoop(Unknown Source)
    at java.util.TimerThread.run(Unknown Source)
Exception in thread "Timer-1" java.lang.NoClassDefFoundError: com/mchange/v2/resourcepool/BasicResourcePool$1DestroyResourceTask
    at com.mchange.v2.resourcepool.BasicResourcePool.destroyResource(BasicResourcePool.java:980)
    at com.mchange.v2.resourcepool.BasicResourcePool.removeResource(BasicResourcePool.java:1406)
    at com.mchange.v2.resourcepool.BasicResourcePool.removeResource(BasicResourcePool.java:1378)
    at com.mchange.v2.resourcepool.BasicResourcePool.cullExpired(BasicResourcePool.java:1462)
    at com.mchange.v2.resourcepool.BasicResourcePool.access$1900(BasicResourcePool.java:32)
 
    at com.mchange.v2.resourcepool.BasicResourcePool$CullTask.run(BasicResourcePool.java:1937)
    at java.util.TimerThread.mainLoop(Unknown Source)
    at java.util.TimerThread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
    ... 8 more

原因是项目使用了我之前打包好的SSH集合jar包,其中包含了一个com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar 包,jar包产生了冲突,删掉之后程序目前为止都还正常。


PS:后来发现还是会经常报类似的错误。某一天,我灵光一闪突然意识到这好像是因为我在开发过程中为了方便开发,将项目的自动重新装载设置为了true,如下:

<Context path="/Village" docBase="D:\Workspaces\MyEclipse 10\webproject\Village\WebRoot" reloadable= "true" privileged="true">
经过测试发现确实如此,一个正常开启的项目并不会报这个错误。





<pre name="code" class="html">
</pre>

<Context path="/Village" docBase="D:\Workspaces\MyEclipse 10\webproject\Village\WebRoot" reloadable= "true" privileged="true">
<Context path="/Village" docBase="D:\Workspaces\MyEclipse 10\webproject\Village\WebRoot" reloadable= "true" privileged="true">
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值