打扰一下终端的图片-我的项目设置非常糟糕,因此我无法将实际日志粘贴到此处。
有时,当我启动我的vertx Web服务器并登录时,它做得很好,没有任何问题。一段时间后,任何数据库请求(例如再次登录)都将返回此错误。有时这只是在启动时发生。JDBCClient
是在服务器负载上初始化的,我认为错误可能与它所连接的AWS服务器有关,并向其提供超时信号。有什么办法可以在发出请求之前检查并重新初始化JDBCClient
?还是我不知道的另一个地方?
最佳答案
RejectedExecutionException
有两个原因RejectedExecutionException
的原因之一是当我们尝试
关闭执行程序后,执行新任务。RejectedExecutionException
的另一种情况是执行器出现
不能再承担更多的任务。有时候是这样的
当达到其本地“内存”的限制时。
在您的情况下,此异常导致108
的第JDBCClientImpl.java
行(即exec.execute()
)出现。这里的exec
是ExecutorService
的对象,该对象导致RejectedExecutionException
,因为无法提交任务执行该任务,或者是因为该执行器已关闭,或者由于其容量已达到。
检查您是否正在ResultSet
,Statement
和Connection
关闭
是否。
检查您是否多次初始化JDBCClientImpl
也可能导致此异常。
ThreadPoolExecutor具有finalize()方法,可以关闭
执行者。鉴于我们没有提及基础
执行者,最终敲定似乎很有可能
导致关机。
您可以检出此URL的RejectedExecutionException以及此JDBCCLientImpl.java的位置,您可以在其中找到getConnection()
方法的源。
关于java - 在vertx中启动或一段时间后出现JDBCClient错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39509414/