C3P0连接池系统启动时初始化报错!!!求大神指点一二

绝代金刚 2014-08-11 05:35:03


import java.sql.Connection;
import java.sql.SQLException;
import org.apache.log4j.Logger;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.mchange.v2.c3p0.DataSources;
import com.mchange.v2.c3p0.PooledDataSource;
import com.ufmsoft.factory.ResourceUtil;

/**
* @ClassName: DataSourceFactory
* @Description: 数据源工厂类
*/
public class DataSourceFactory {

private static final Logger logger = Logger.getLogger(DataSourceFactory.class);

/**
* 全局数据源
*/
private static ComboPooledDataSource ds = null;

static{
try {
ds = new ComboPooledDataSource(“orcl”);
} catch (Exception e) {
logger.error("初始实例化数据源出现错误,请确认配置文件存在和正确!");
e.printStackTrace();
}
}

/**
* @Title: getInstance
* @Description: 实例化数据源
*/
public static final void getInstance() {
try {
DataSources.destroy(ds); // 关闭datasource
ds=null;
ds = new ComboPooledDataSource(ResourceUtil.getDatasourceName());
} catch (Exception e) {
logger.error("实例化数据源出现错误,请确认配置文件存在和正确!");
e.printStackTrace();
}
}

/**
* @Title: closeDataSource
* @Description: 关闭数据源
* @throws Exception
*/
public static void closeDataSource() throws Exception{
ds.getClass().getMethod("close").invoke(ds);

}
/**
* @Title: getConnection
* @Description: 获取数据链接
* @return Connection
* @throws Exception
*/
public static Connection getConnection(){
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>!!!!!!!!");
try {
return ds.getConnection();
} catch (SQLException e) {
logger.error("获取数据链接失败>>>>>>>>>>>>>>>>>!");
e.printStackTrace();
return null;
}
}
/**
* @Title: closeConn
* @Description: 关闭数据链接
* @param con Connection
* @throws SQLException
*/
public static void closeConn(Connection con) throws SQLException{
con.close();
}
}



c3p0-config.xml

<c3p0-config>
<named-config name="orcl">
<property name="user">xxx</property>
<property name="password">xxx</property>
<property name="driverClass">oracle.jdbc.driver.OracleDriver</property>
<property name="jdbcUrl">jdbc:oracle:thin:@192.168.1.10:1521:orcl</property>

<property name="acquireIncrement">50</property>
<property name="initialPoolSize">100</property>
<property name="minPoolSize">50</property>
<property name="maxPoolSize">1000</property>
<!-- intergalactoApp adopts a different approach to configuring statement caching -->
<property name="maxStatements">0</property>
<property name="maxStatementsPerConnection">5</property>
<!-- he's important, but there's only one of him -->
<user-overrides user="master-of-the-universe">
<property name="acquireIncrement">1</property>
<property name="initialPoolSize">1</property>
<property name="minPoolSize">1</property>
<property name="maxPoolSize">5</property>
<property name="maxStatementsPerConnection">50</property>
</user-overrides>
</named-config>

</c3p0-config>


Servlet 启动的时候加载

@Override
public void init() throws ServletException {
super.init();
DataSourceFactory.getConnection();
}



错误日志:

严重: StandardWrapper.Throwable
java.lang.ExceptionInInitializerError
at com.mchange.v2.c3p0.impl.PoolBackedDataSourceBase.<init>(PoolBackedDataSourceBase.java:54)
at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.<init>(AbstractPoolBackedDataSource.java:74)
at com.mchange.v2.c3p0.AbstractComboPooledDataSource.<init>(AbstractComboPooledDataSource.java:142)
at com.mchange.v2.c3p0.AbstractComboPooledDataSource.<init>(AbstractComboPooledDataSource.java:138)
at com.mchange.v2.c3p0.AbstractComboPooledDataSource.<init>(AbstractComboPooledDataSource.java:215)
at com.mchange.v2.c3p0.ComboPooledDataSource.<init>(ComboPooledDataSource.java:53)
at com.ufmsoft.factory.db.pool.DataSourceFactory.<clinit>(DataSourceFactory.java:34)
at com.ufmsoft.servlet.LoginServlet.init(LoginServlet.java:317)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4350)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4659)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1041)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:964)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
at org.apache.catalina.core.StandardService.start(StandardService.java:519)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.reflect.UndeclaredThrowableException
at $Proxy6.find(Unknown Source)
at com.mchange.v2.cfg.MConfig.readVmConfig(MConfig.java:75)
at com.mchange.v2.c3p0.cfg.C3P0Config.findLibraryMultiPropertiesConfig(C3P0Config.java:157)
at com.mchange.v2.c3p0.cfg.C3P0Config.<clinit>(C3P0Config.java:143)
... 35 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.mchange.v1.lang.Synchronizer$1.invoke(Synchronizer.java:58)
... 39 more
Caused by: java.lang.NoSuchMethodError: com.mchange.v2.cfg.BasicMultiPropertiesConfig.<init>([Ljava/lang/String;Ljava/util/List;)V
at com.mchange.v2.cfg.ConfigUtils.read(ConfigUtils.java:63)
at com.mchange.v2.cfg.MConfig$CSManager.recreateFromKey(MConfig.java:153)
at com.mchange.v1.cachedstore.NoCleanupCachedStore.find(NoCleanupCachedStore.java:63)
... 44 more
...全文
4062 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
justwannafuckyou 2016-12-07
  • 打赏
  • 举报
回复
引用 16 楼 FarAwayWL 的回复:
很常见的问题: c3p0的jar包和mchange-commons的jar包冲突了 换不同的版本试试吧
多谢 正是这个原因 我以为随便下个 c3p0.far 和 mchange-commons 都可以 但是不行的 有的版本不能一起用
awaken233 2016-09-13
  • 打赏
  • 举报
回复
很常见的问题: c3p0的jar包和mchange-commons的jar包冲突了 换不同的版本试试吧
coolbamboo2008 2015-03-05
  • 打赏
  • 举报
回复
缺jar包吧
wangliguang517 2015-03-05
  • 打赏
  • 举报
回复
看错误是com.mchange.v2.cfg.BasicMultiPropertiesConfig的init方法和调用它的类不匹配 也就是说BasicMultiPropertiesConfig所在的包 和 调用它的类所在的包不匹配 你可以按照13楼的说法看看0.9.5版本里BasicMultiPropertiesConfig这个类的init方法是不是正确匹配的(反编译看源码就可以) 也可以多下载几个版本然后同样的方法,把各个版本反编译以后看看BasicMultiPropertiesConfig的init方法是否正确匹配
someyan 2015-03-05
  • 打赏
  • 举报
回复
c3p0-0.9.1 版本有 com.mchange.v2.cfg.BasicMultiPropertiesConfig.<init> 这个方法,换一下版本试试,0.9.5是否缺少该方法
绝代金刚 2014-08-12
  • 打赏
  • 举报
回复
引用 9 楼 djy18178 的回复:
是不是少了jar包 报的错是找不到方法·· Caused by: java.lang.NoSuchMethodError: com.mchange.v2.cfg.BasicMultiPropertiesConfig.<init>([Ljava/lang/String;Ljava/util/List;)V at com.mchange.v2.cfg.ConfigUtils.read(ConfigUtils.java:63) at com.mchange.v2.cfg.MConfig$CSManager.recreateFromKey(MConfig.java:153) at com.mchange.v1.cachedstore.NoCleanupCachedStore.find(NoCleanupCachedStore.java:63) ... 44 more
缺什么jar包呢?
放纵的青春 2014-08-12
  • 打赏
  • 举报
回复
是不是少了jar包 报的错是找不到方法·· Caused by: java.lang.NoSuchMethodError: com.mchange.v2.cfg.BasicMultiPropertiesConfig.<init>([Ljava/lang/String;Ljava/util/List;)V at com.mchange.v2.cfg.ConfigUtils.read(ConfigUtils.java:63) at com.mchange.v2.cfg.MConfig$CSManager.recreateFromKey(MConfig.java:153) at com.mchange.v1.cachedstore.NoCleanupCachedStore.find(NoCleanupCachedStore.java:63) ... 44 more
绝代金刚 2014-08-12
  • 打赏
  • 举报
回复
引用 7 楼 ygycomon 的回复:
at com.ufmsoft.factory.db.pool.DataSourceFactory.<clinit>(DataSourceFactory.java:34) 跟进去看源码吧,不要纠结了,最简单的方法
跟进去跟着跟着就跟丢了...
tony4geek 2014-08-12
  • 打赏
  • 举报
回复
看错误的信息好像是缺少jar
放纵的青春 2014-08-12
  • 打赏
  • 举报
回复
引用 10 楼 juedaijinggang 的回复:
[quote=引用 9 楼 djy18178 的回复:] 是不是少了jar包 报的错是找不到方法·· Caused by: java.lang.NoSuchMethodError: com.mchange.v2.cfg.BasicMultiPropertiesConfig.<init>([Ljava/lang/String;Ljava/util/List;)V at com.mchange.v2.cfg.ConfigUtils.read(ConfigUtils.java:63) at com.mchange.v2.cfg.MConfig$CSManager.recreateFromKey(MConfig.java:153) at com.mchange.v1.cachedstore.NoCleanupCachedStore.find(NoCleanupCachedStore.java:63) ... 44 more
缺什么jar包呢?[/quote] 具体不知道啊 看看你的包是哪里来的 以前项目中还是官方下的 找找有没有没导入的
致知Fighting 2014-08-11
  • 打赏
  • 举报
回复
at com.ufmsoft.factory.db.pool.DataSourceFactory.<clinit>(DataSourceFactory.java:34) 跟进去看源码吧,不要纠结了,最简单的方法
绝代金刚 2014-08-11
  • 打赏
  • 举报
回复
引用 4 楼 ygycomon 的回复:
我觉得应该是配置那里没有匹配上,你可以尝试先把那些乱七八糟的配置都干掉,只留下驱动,用户名密码什么的核心配置,然后启动试下

<c3p0-config>
<named-config name="orcl">
<property name="user">888</property> 
<property name="password">888</property> 
<property name="driverClass">oracle.jdbc.driver.OracleDriver</property> 
<property name="jdbcUrl">jdbc:oracle:thin:@192.168.1.10:1521:orcl</property> 
</named-config>
</c3p0-config> 
删成这样,启动还是一样报错
绝代金刚 2014-08-11
  • 打赏
  • 举报
回复
引用 2 楼 magi1201 的回复:
是否缺jar包呢? 看看 com.mchange.v2.cfg.BasicMultiPropertiesConfig.<init> 有没有,再就是同日志打印文件等的兼容问题
mchange-commons-java-0.2.7.jar 也放进去了呀
致知Fighting 2014-08-11
  • 打赏
  • 举报
回复
我觉得应该是配置那里没有匹配上,你可以尝试先把那些乱七八糟的配置都干掉,只留下驱动,用户名密码什么的核心配置,然后启动试下
绝代金刚 2014-08-11
  • 打赏
  • 举报
回复
引用 1 楼 ygycomon 的回复:
包的版本不对吧,初始化参数匹配不上
我在main方法中直接运行没有问题,加上项目中启动的时候就会出错 我用的包是 c3p0-0.9.5-pre8.jar c3p0-oracle-thin-extras-0.9.5-pre8.jar
姜小白- 2014-08-11
  • 打赏
  • 举报
回复
是否缺jar包呢? 看看 com.mchange.v2.cfg.BasicMultiPropertiesConfig.<init> 有没有,再就是同日志打印文件等的兼容问题
致知Fighting 2014-08-11
  • 打赏
  • 举报
回复
包的版本不对吧,初始化参数匹配不上

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧