在 vertx 中启动时或一段时间后出现 JDBCClient 错误
JDBCClient errors on start or after some time in vertx
请原谅终端图片 - 我的项目设置很糟糕,所以我无法将实际日志粘贴到这里。
有时当我启动我的 vertx 网络服务器并登录时,它完全没有问题。一段时间后,任何数据库请求(比如再次登录)都会return这个错误。有时这只是在启动时发生。
JDBCClient
是在服务器加载时初始化的,我觉得这个错误可能与它正在连接的 AWS 服务器有关,给它一个超时信号。在发出请求之前,有什么方法可以检查并重新初始化 JDBCClient
吗?还是有其他我不知道的问题?
有两个原因 RejectedExecutionException
RejectedExecutionException
的原因之一是当我们试图
在我们关闭执行器后执行一个新任务。
- 另一种
RejectedExecutionException
的情况,出现在Executor时
不能再承担其职责范围内的任何任务。有时候是这样的
当达到其本地“内存”的限制时。
在您的情况下,此异常导致 JDBCClientImpl.java
的第 108
行,即 exec.execute()
。这里 exec
是 ExecutorService
的对象,它导致 RejectedExecutionException
因为任务无法提交执行,或者因为这个执行器已经关闭或者因为它的容量已经达到。
- 检查您是否正在
ResultSet
、Statement
和 Connection
关闭
不管是不是。
- 检查您是否正在多次初始化
JDBCClientImpl
也可能导致这个异常。
- ThreadPoolExecutor 有一个 finalize() 方法关闭
执行人。鉴于我们没有保留对下属的引用
执行者,最终确定的可能性很大
导致关机。
您可以查看此 url for RejectedExecutionException and this JDBCCLientImpl.java,您可以在其中找到 getConnection()
方法源。
请原谅终端图片 - 我的项目设置很糟糕,所以我无法将实际日志粘贴到这里。
有时当我启动我的 vertx 网络服务器并登录时,它完全没有问题。一段时间后,任何数据库请求(比如再次登录)都会return这个错误。有时这只是在启动时发生。
JDBCClient
是在服务器加载时初始化的,我觉得这个错误可能与它正在连接的 AWS 服务器有关,给它一个超时信号。在发出请求之前,有什么方法可以检查并重新初始化 JDBCClient
吗?还是有其他我不知道的问题?
有两个原因 RejectedExecutionException
RejectedExecutionException
的原因之一是当我们试图 在我们关闭执行器后执行一个新任务。- 另一种
RejectedExecutionException
的情况,出现在Executor时 不能再承担其职责范围内的任何任务。有时候是这样的 当达到其本地“内存”的限制时。
在您的情况下,此异常导致 JDBCClientImpl.java
的第 108
行,即 exec.execute()
。这里 exec
是 ExecutorService
的对象,它导致 RejectedExecutionException
因为任务无法提交执行,或者因为这个执行器已经关闭或者因为它的容量已经达到。
- 检查您是否正在
ResultSet
、Statement
和Connection
关闭 不管是不是。 - 检查您是否正在多次初始化
JDBCClientImpl
也可能导致这个异常。 - ThreadPoolExecutor 有一个 finalize() 方法关闭 执行人。鉴于我们没有保留对下属的引用 执行者,最终确定的可能性很大 导致关机。
您可以查看此 url for RejectedExecutionException and this JDBCCLientImpl.java,您可以在其中找到 getConnection()
方法源。