Java 为什么BackgroundThread Drivermanager.getConnection在glassfish重新部署时导致MySQLNonTransientConnectionException?

Java 为什么BackgroundThread Drivermanager.getConnection在glassfish重新部署时导致MySQLNonTransientConnectionException?,java,mysql,multithreading,glassfish,redeploy,Java,Mysql,Multithreading,Glassfish,Redeploy,我的web应用程序中有一个后台线程。让我们假设我的代码中有某个地方 BackgroundThread.getInstance().start(),它只启动一次BackgroundThread BackgroundThread使用Drivermanager.getconnection获取连接,执行某些操作,关闭连接,然后等待10秒钟。然后在无限循环中重复这个过程 但如果我重新部署glassfish,我将开始得到MySQLNonTransientConnectionException:无法创建连接

我的web应用程序中有一个后台线程。让我们假设我的代码中有某个地方 BackgroundThread.getInstance().start(),它只启动一次BackgroundThread

BackgroundThread使用Drivermanager.getconnection获取连接,执行某些操作,关闭连接,然后等待10秒钟。然后在无限循环中重复这个过程

但如果我重新部署glassfish,我将开始得到
MySQLNonTransientConnectionException:无法创建连接

我不确定是否可以在不重新部署glassfish的情况下重现该问题


是否知道是什么导致了问题以及如何避免问题?

看来取消部署并不能正确关闭所有打开的数据库连接,重新部署后,打开的连接数将增加一倍。另请参见,因为该线程使用了max 1连接,所以它可能与DriverManager如何使用连接以及glassfish如何重新部署有关。。。虽然还没有查看源代码,但是…虽然更有趣的是听到如何避免这个问题。。。。如果知道原因可能会有帮助。。。