【发布时间】:2018-03-07 13:36:43
【问题描述】:
我在做什么:
我有一个用 Kotlin (JVM) 编写的 AWS Lambda,它从队列中读取消息并在 MySQL 表上写入一些内容。
我为此使用了 MyBatis,这是我在 Handler 中所做的简短简化的 sn-p:
// 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 容器被自动销毁时,它们才会被销毁。
既然我要关闭所有会话,为什么会发生这种情况?为了防止这种行为,我能做些什么吗?
【问题讨论】:
-
你在使用连接池吗?
-
没有使用任何框架,所以我想我没有。
-
鉴于您没有向我们展示您是如何获得连接的,我们也无法真正告诉我们,但这可以解释为什么连接保持打开状态。
-
@MarkRotteveel 我已经更新了我的代码 sn-p,每次创建会话时都会生成连接。
-
请向我们展示您的配置。
标签: java mysql amazon-web-services aws-lambda mybatis