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

时间:2018-03-07 13:36:43

标签: java mysql amazon-web-services aws-lambda mybatis

我在做什么

我有一个用Kotlin(JVM)编写的AWS Lambda,它从队列中读取消息并在MySQL表上写入内容。

我正在使用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容器被自动销毁时,它们才会被销毁。

为什么会因为我关闭所有会话而发生这种情况?为了防止这种行为,我能做些什么吗?

1 个答案:

答案 0 :(得分:1)

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