Spring JDB C asyn c обратный вызов с HikariCP завершается неудачно с ошибкой закрытия соединения - PullRequest
0 голосов
/ 21 января 2020

У меня есть сценарий, в котором мне нужно прочитать из БД, обработать результаты, сделать вызов REST и затем обновить обработанный результат обратно в БД.

Теперь, когда я делаю это без обратных вызовов Asyn c с шаблоном OkHttp и Spring JDB C, который использует HikariCP, все идет гладко.

Но, как только я что-то делаю, как показано ниже, я получаю ошибку как java. sql .SQLException: HikariDataSource HikariDataSource (HikariPool-1) закрыт.

private fun updateEntityInDAM(json: JSONObject, entity: SomeEntity) {

    getResponseFromDAM(json, object : Callback {
        override fun onFailure(call: Call, e: IOException) {
            logger.error("Update to DAM Failed. Exception thrown.", e)
        }
        override fun onResponse(call: Call, response: Response) {
            response.use {
                if(response.isSuccessful) {
                    addOrUpdateEntityInDB(entity)
                } else {
                    processErrorRecord(response, entity)
                }
            }
            response.close()
        }
    })

}

Я пробовал варианты jdbcTemplate.update (...), jdbcTemplate.run {update (...)}, а также что-то, как показано ниже

        val connection = hikariDataSource.connection
        if(connection.isClosed) {
            logger.error("Update to DB failed. Connection is closed.")
        } else {
            val ps: PreparedStatement = connection.prepareStatement(updateSQL)
            ps.executeUpdate()
            connection.close()
        }

Может кто-нибудь помочь здесь? Некоторое неправильное управление транзакциями происходит здесь, но обработка транзакций здесь на самом деле не требуется.

Спасибо!

...