代码之家  ›  专栏  ›  技术社区  ›  abierto

无法关闭与MyBatis的db连接

  •  2
  • abierto  · 技术社区  · 6 年前

    我在做什么 :

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

    我使用MyBatis就是为了这个目的,这是我在处理程序中所做的简短简化片段:

    // 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 回复  |  直到 6 年前
        1
  •  1
  •   Jeff Butler    6 年前

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