我在做什么:
我有一个用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容器被自动销毁时,它们才会被销毁。
为什么会因为我关闭所有会话而发生这种情况?为了防止这种行为,我能做些什么吗?
答案 0 :(得分:1)
您正在使用PooledDataSource
来创建连接池。更改为UnpooledDataSource
,这可能会解决问题。