最近项目中遇见一问题,在开发环境没有问题的代码,到了生产环境就会报如下错误:
严重: A web application registered the JBDC driver [oracle.jdbc.OracleDriver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
一开始以为是数据库账号密码错误,或数据库链接不上,因为这两个原因也确实会报这个错,可是通过确认发现不是以上两个原因引起的,当时真的是百思不得其解,后来通过一步步的排查和测试,发现,以前生产、测试、开发环境的数据库都是集群形式的,我们配的也是集群形式多个节点的数据库链接,如下:
jdbc.url=jdbc:oracle:thin:@(DESCRIPTION=(FAILOVER = yes)(ADDRESS = (PROTOCOL = TCP)(HOST =XXX.XXX.XXX.XXX)(PORT
= 1521))(ADDRESS = (PROTOCOL = TCP)(HOST =XXX.XXX.XXX.XXX)(PORT
= 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = cedb)))
而我们新建的这一台生产环境连的数据库是直连的,没有做数据库集群,所以加载链接的时候报如上错误,把链接的配置设置如下即可:
jdbc.url=jdbc\:oracle\:thin\:@XXX.XXX.XXX.XXX\:1521\:cedb
总结来说,一般报以上错误,肯定是配置不对,或数据库异常!
这次的异常真的是受教了,希望可以帮到有一样困惑的朋友。
本文解决了一个生产环境代码运行时出现的错误:使用集群数据库配置导致的问题。通过对比开发、测试环境与生产环境的数据库连接配置,作者发现了配置不当的原因,并提供了正确的连接方式。主要问题在于生产环境数据库为直连而非集群形式,导致错误发生。解决方案是调整数据库链接配置,避免内存泄露。
8295

被折叠的 条评论
为什么被折叠?



