EJB 3.1中的@Asynchronous是否在Async方法完成时关闭/关闭连接

问题描述 投票:1回答:2

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

问题是当我们做future.get()时,是否释放了连接池和资源中的数据库连接,该连接是在异步方法中使用的?

asynchronous java-ee connection-pooling ejb-3.1
2个回答
3
投票

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

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

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


2
投票

有可能他们是:)否则使用@Asynchronous将很快导致应用程序崩溃,因为缺乏资源...

无论如何,当使用Java-ee中的线程本地存储来存储资源并且@Asynchronous将执行推迟到专用线程时,那里使用的资源(包括JCA连接 - 以及数据库之一)也专用于@Asynchronous方法执行(不是继承自调用者线程)。

© www.soinside.com 2019 - 2024. All rights reserved.