首页 > 解决方案 > EJB 3.1 中的 @Asynchronous 是否在 Async 方法完成时关闭/释放连接

问题描述

在 EJB 3.1 中,我们使用 @Asynchronous 注释了一个方法,并使用 Future.get 来获取结果。

问题是当我们执行 future.get() 时,连接池中的数据库连接和资源是否被释放,而这些资源正在用于该异步方法?

标签: asynchronousjakarta-eeconnection-poolingejb-3.1

解决方案


数据库连接根据您配置的所用应用程序服务器的连接池策略关闭。

在谈论会话 bean 和容器管理的事务时,连接在最后返回到被调用业务方法的事务范围。

由于带有注释的会话 bean@Asynchronous不支持事务传播(例如,参见 EJB 3.2 规范 4.5.3),如果方法配置为REQUIRED或,则每次调用业务方法都会创建一个新事务REQUIRES_NEW。因此,此事务范围以被调用的业务方法返回而结束。


推荐阅读