C3P0 连接池错误【已解决】-An exception occurred while acquiring a poolable resource. Will retry.

本文介绍了一种常见情况:使用SpringMyBatis整合时遇到C3P0连接池无法正常连接数据库的问题,并给出了具体的解决步骤。通过调整数据库配置文件中的参数和修正Spring配置文件,可以有效解决ORA-01017错误。

C3P0 连接池出错

今天在学习Spring MyBatis 整合时报错
异常如下:

[com.mchange.v2.resourcepool.BasicResourcePool]-An exception occurred while acquiring a poolable resource. Will retry.
java.sql.SQLException: ORA-01017: invalid username/password; logon denied

	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439)
	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:388)
	at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:381)
	at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:564)
	at oracle.jdbc.driver.T4CTTIoauthenticate.processError(T4CTTIoauthenticate.java:431)
	at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:436)
	at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
	at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:366)
	at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:752)
	at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:359)
	at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:531)
	at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:221)
	at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
	at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503)
	at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:134)
	at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
	at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
	at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
	at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
	at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
	at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
	at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Connections could not be acquired from the underlying database!
### The error may exist in UserMapper.xml
### The error may involve com.Spring.Mapper.UserMapper.SearUser
### The error occurred while executing a query
### Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Connections could not be acquired from the underlying database!

	at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:77)
	at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446)
	at com.sun.proxy.$Proxy10.selectOne(Unknown Source)
	at org.mybatis.spring.SqlSessionTemplate.selectOne(SqlSessionTemplate.java:166)
	at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:83)
	at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)
	at com.sun.proxy.$Proxy11.SearUser(Unknown Source)
	at com.Spring.Service.UserServiceImpl.SearUser(UserServiceImpl.java:20)
	at SpringTest.test(SpringTest.java:12)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
	at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
	at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
	at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
	at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:220)
	at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:53)

Process finished with exit code -1

出现的情况是C3P0连接池一直连接数据库,但是一直连接不上 所以频繁连接

具体解决方法如下:
检查db.propreties 文件

正确写法:

jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@//localhost:1521/MMH
jdbc.username=MMH
jdbc.password=0124

注:此处一定要加jdbc. !!!!!!

Spring 配置目录

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <!-- SpringEL 语法 ${key} -->
        <property name="driverClassName" value="${jdbc.driver}" />
        <property name="url" value="${jdbc.url}" />
        <!-- ${username}如果key是username,name 默认spring框架调用的当前操作系统的账号 解决方案:可以统一给key加一个前缀 -->
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
    </bean>

需要配置的属性自行配置

### Vitis 创建应用项目失败的解决方案 在使用 Vitis 创建应用项目时,如果出现“create application project failed exception while adding domain”的错误提示,通常与 BSP(Board Support Package)生成失败有关。以下是一些可能的原因及解决方法: #### 1. BSP 源代码生成失败 错误信息表明在尝试添加域时发生异常,具体为无法生成 BSP 的源代码[^1]。这可能是由于以下原因导致: - **硬件设计不完整**:确保 `.xsa` 文件正确导出,并包含所有必要的硬件组件和接口。 - **工具版本不匹配**:Vivado 和 Vitis 的版本需要保持一致。例如,Vivado 2020.2 需要搭配 Vitis 2020.2 使用[^2]。 - **安装选项缺失**:如果安装 Vivado 或 Vitis 时未选择正确的组件(如仅安装了 HDL 而未安装 Vitis),可能导致功能受限[^3]。 #### 2. 解决方法 以下是针对上述问题的具体解决步骤: - **检查硬件设计文件** 确保 `.xsa` 文件正确导出,并且硬件平台已成功创建。可以通过 Vivado 中的 `Export Hardware` 功能验证硬件设计完整性[^2]。 - **重新安装或更新工具** 如果工具版本不匹配或安装选项缺失,建议重新安装 Vivado 和 Vitis,并确保选择了完整的安装包(包括 Vitis 和相关插件)。通过 Vivado 的 `Help -> Add Design Tools or Devices...` 功能可以追加安装缺失的组件[^2]。 - **清理缓存并重试** 删除工作目录中的临时文件和缓存,然后重新尝试创建应用项目。路径通常为 `<project_directory>/cache` 或 `<project_directory>/sdk`. - **验证 BSP 配置** 在创建应用项目前,手动生成 BSP 并验证其正确性。可以在 Vitis 中选择 `File -> New -> Board Support Package`,然后按照向导完成配置[^1]。 #### 3. 示例代码 以下是一个简单的 Python 脚本,用于检查 `.xsa` 文件是否存在以及是否可访问: ```python import os def check_xsa_file(file_path): if os.path.exists(file_path) and file_path.endswith('.xsa'): print("XSA file is valid.") else: print("Invalid or missing XSA file.") # 替换为实际的 .xsa 文件路径 xsa_path = "/path/to/your/project/system.xsa" check_xsa_file(xsa_path) ``` #### 4. 注意事项 - 确保环境变量设置正确,特别是 `XILINX_VITIS` 和 `XILINX_VIVADO` 的路径。 - 如果问题仍然存在,可以尝试使用命令行工具 `xsct` 手动创建 BSP 和应用项目。 --- ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值