码迷,mamicode.com
首页 > 数据库 > 详细

Spring4.1使用c3p0加载配置文件连接数据库,Access denied for user 'root'@'localhost' 错误!

时间:2015-01-30 22:39:44      阅读:421      评论:0      收藏:0      [点我收藏+]

标签:

db.properties
jdbc.user=root
jdbc.password=admin
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc\:mysql\:///spring4
jdbc.initialPoolSize=5
jdbc.maxPoolSize=10
Spring.xml中
<context:property-placeholder location="classpath:db.properties" />
 <!-- 配置c3p0数据源 -->
 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
  <property name="user" value="${jdbc.user}"></property>
  <property name="password" value="${jdbc.password}"></property>
  <property name="driverClass" value="${jdbc.driverClass}"></property>
  <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
  <property name="initialPoolSize" value="${jdbc.initialPoolSize}"></property>
  <property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
 </bean>
测试代码:
public class Test {
 public static void main(String[] args) {
  ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
  DataSource dataSource = (DataSource) ctx.getBean("dataSource");
  System.out.println(dataSource);
 }
}
如果在db.properties文件中,用户名或者密码后面存在空格的话一定会报下面的错误,可见c3p0对配置文件的读取非常不人性化,稍不注意就出问题,还很难查找出来。
一月 30, 2015 10:45:38 上午 com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask run 
警告: com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@1bc64577 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception: 
java.sql.SQLException: Access denied for user ‘root‘@‘localhost‘ (using password: YES) 
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073) 
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3593) 
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3525) 
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:931) 
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4031) 
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1296) 
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2338) 
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2371) 
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2163) 
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:794) 
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) 
at sun.reflect.GeneratedConstructorAccessor7.newInstance(Unknown Source) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:408) 
at com.mysql.jdbc.Util.handleNewInstance(Util.java:407) 
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:378) 
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305) 
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:146) 
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:195) 
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:184) 
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:200) 
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1086) 
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1073) 
at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:44) 
at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1810) 
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:648) 
配置正确的输出结果:
com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, dataSourceName -> 1hgery997fqt554114cyr|4de5031f, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> com.mysql.jdbc.Driver, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 1hgery997fqt554114cyr|4de5031f, idleConnectionTestPeriod -> 0, initialPoolSize -> 5, jdbcUrl -> jdbc:mysql:///spring4, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 0, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 10, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 3, numHelperThreads -> 3, preferredTestQuery -> null, properties -> {user=******, password=******}, propertyCycle -> 0, statementCacheNumDeferredCloseThreads -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, userOverrides -> {}, usesTraditionalReflectiveProxies -> false ]

Spring4.1使用c3p0加载配置文件连接数据库,Access denied for user 'root'@'localhost' 错误!

标签:

原文地址:http://blog.csdn.net/shijiebei2009/article/details/43315613

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!