java - Oracle自治数据库JDBC错误没有更多数据可以从套接字读取,但webapp可以正常工作
问题描述
尝试在云中使用 dbcp2 和 Oracle db 设置数据库连接池。
尝试连接到 Oracle 自治数据库时遇到此错误。最奇怪的部分是,即使遇到此错误,当此连接池开始用于添加用户、提取报告等时,我在与 webapp 上构建的服务交互时也没有收到任何错误。
该数据库启用了 tcps,我正在使用 Oracle Wallets 连接到该数据库。
错误总是被复制,所以如果它是一些网络问题,请注意
任何想法可能导致此错误?
java.sql.SQLException: Error preloading the connection pool
at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:573) ~[commons-dbcp2-2.8.0.jar:2.8.0]
at org.apache.commons.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:734) ~[commons-dbcp2-2.8.0.jar:2.8.0]
at com.testme.mmappserver.upgrade.start.MartUpgrade.isMartVersionPresent(MartUpgrade.java:176) ~[classes/:?]
at com.testme.mmappserver.upgrade.start.MartUpgrade.upgrade(MartUpgrade.java:129) ~[classes/:?]
at com.testme.mmappserver.upgrade.start.MartUpgrade.upgrade_main(MartUpgrade.java:81) [classes/:?]
at com.testme.mmappserver.upgrade.Configui$11.run(Configui.java:499) [classes/:?]
Caused by: java.sql.SQLRecoverableException: No more data to read from socket
at oracle.jdbc.driver.T4CMAREngineNIO.prepareForUnmarshall(T4CMAREngineNIO.java:784) ~[ojdbc8-19.3.0.0.jar:19.3.0.0.0]
at oracle.jdbc.driver.T4CMAREngineNIO.unmarshalUB1(T4CMAREngineNIO.java:429) ~[ojdbc8-19.3.0.0.jar:19.3.0.0.0]
at oracle.jdbc.driver.T4C8TTIpro.receive(T4C8TTIpro.java:134) ~[ojdbc8-19.3.0.0.jar:19.3.0.0.0]
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1623) ~[ojdbc8-19.3.0.0.jar:19.3.0.0.0]
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:588) ~[ojdbc8-19.3.0.0.jar:19.3.0.0.0]
at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:793) ~[ojdbc8-19.3.0.0.jar:19.3.0.0.0]
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:57) ~[ojdbc8-19.3.0.0.jar:19.3.0.0.0]
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:747) ~[ojdbc8-19.3.0.0.jar:19.3.0.0.0]
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:562) ~[ojdbc8-19.3.0.0.jar:19.3.0.0.0]
at org.apache.commons.dbcp2.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:52) ~[commons-dbcp2-2.8.0.jar:2.8.0]
at org.apache.commons.dbcp2.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:357) ~[commons-dbcp2-2.8.0.jar:2.8.0]
at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:918) ~[commons-pool2-2.9.0.jar:2.9.0]
at org.apache.commons.pool2.impl.GenericObjectPool.addObject(GenericObjectPool.java:1023) ~[commons-pool2-2.9.0.jar:2.9.0]
at org.apache.commons.dbcp2.BasicDataSource.createDataSource(BasicDataSource.java:569) ~[commons-dbcp2-2.8.0.jar:2.8.0]
... 5 more
解决方案
您使用的 Oracle JDBC 驱动程序版本非常旧。我建议您将其更新为适合您的 DBMS 版本的最新版本。请参考随附的页面网址,这可能会有所帮助。
推荐阅读
- json - 使用 Json.Net 将 namevaluecollection 转换为 Json
- oracle - 在 Sql Oracle 中运行带有游标输出的存储过程?
- asp.net-mvc - Asp.Net Core 2.1 - 不使用 IFormFile 上传文件
- c - 我如何声明一个 int 类型的输入变量,例如。取一个输入 x(0
我尝试使用此代码
#include <stdio.h> int main() { int x,y,z; scanf("%d%d", &x, &y); z = x + y; printf("%d", z); return 0; }
- javascript - 简单的模板驱动表单Angular4给出错误
- c# - 如何使用导航按钮循环浏览数据?
- java - java,在超类中使用构造函数扩展类
- c# - How to rapid load image gif use FFImageLoading in Xamarin Forms?
- akamai - akamai 是否将所有内容缓存在主机上,或者我必须使用标头来告诉缓存哪个?
- python - 给定预计数时,在大型文本文件中计算字符串的频率(有效)