无法关闭与 MyBatis 的数据库连接

Can't close db connection with MyBatis

我在做什么:

我有一个 AWS Lambda,它是用 Kotlin (JVM) 编写的,它从队列中读取一条消息并在 MySQL table.

上写入一些内容

我为此目的使用 MyBatis,这是我在 Handler 中所做的一个简短的简化片段:

// initializing configuration
val dataSource = PooledDataSource(driver, url, username, password)
val environment = Environment(environmentName, JdbcTransactionFactory(), dataSource)
val configuration = Configuration(environment)

try {
    val builder = SqlSessionFactoryBuilder()
    val session = builder.build(configuration).openSession()
    val mapper: CustomMapper = session.getMapper(CustomMapper::class.java)
    mapper.doSomething()
    session.commit()
} finally {
    session.close()
}

我的问题:

执行此 Lambda 时,一些连接在数据库上保持打开状态。只有当 lambda 容器被自动销毁时,它们才会被销毁。

为什么我要关闭所有会话后会出现这种情况?我可以做些什么来防止这种行为?

您正在使用 PooledDataSource 创建连接池。更改为 UnpooledDataSource,这可能会解决问题。