【问题标题】:Java BasicDataSource getting stuck when connectingJava BasicDataSource 连接时卡住
【发布时间】:2021-09-11 03:56:46
【问题描述】:

我正在使用 Apache Commons 库的 DBCP 组件连接到 Oracle 数据库。我创建了一个 BasicDataSource 对象并将 MaxWait 时间设置为两分钟。但是,当我调用“getConnection”方法来获取连接时,它永远不会返回或超时。我正在尝试连接到 Oracle 12.1.0.2 数据库。这可能是什么原因?谢谢。

【问题讨论】:

  • 您可以从使用tnsping检查数据库连接开始
  • 如果排除连接池,可以直接用驱动和相同参数连接吗?可能是连接超时,但池再次拼命尝试为您提供连接。
  • 对此有何建议?

标签: java oracle commonjs dbcp


【解决方案1】:

可能有很多原因,例如: 客户端和服务器之间的防火墙。 数据库太旧而无法接受的 odbc 驱动程序。 连接详细信息不正确。 错误的司机。 使用无权访问的数据库用户。

某种仪器可以提供帮助。

首先要检查:所使用的 io 上的端口是否打开? 是否有监听器在那里等待处理我的连接尝试? 下一步是检查与已知工作的客户端的连接:sqlplus。如果 sqlplus 连接有效,您的 jdbc 客户端也有机会。

【讨论】:

  • 感谢您的回复。我知道防火墙不是问题,并且我尝试了不同版本的 OJDBC 驱动程序。 BasicDataSource 中配置的最大活动会话设置为 33,最大等待时间为 2 分钟,因此如果连接池中没有释放连接,我希望前 33 个连接返回,任何其他连接在两分钟后超时。我创建了一个具有相同设置的测试应用程序,它确实超时并出现异常,但在我们的主应用程序中它没有超时。
猜你喜欢
  • 1970-01-01
  • 2014-04-29
  • 1970-01-01
  • 1970-01-01
  • 2021-09-25
  • 1970-01-01
  • 1970-01-01
  • 2011-04-22
  • 1970-01-01
相关资源
最近更新 更多