当前位置: 首页 > 面试题库 >

在Java EE 6中,在哪里可以配置@Asynchronous调用背后的线程池?

薛坚
2023-03-14
问题内容

我最近了解到,只需添加批注,就可以轻松地使任何会话bean方法异步@Asynchronous

例如

@Asynchronous
public Future<String> processPayment(Order order) throws PaymentException {
    ... 
}

我知道Java EE 7添加了Concurrency
Utilities
,但是在Java EE
6中,方法的线程池配置在@Asyncronous哪里?有没有办法设置超时时间?是固定线程池吗?一个缓存的?优先级是什么?是否可以在容器中的某个位置进行配置?


问题答案:

我认为可以通过从@Timeout注释的方法调用Future.cancel(boolean)来实现超时。需要保留对异步方法返回的Future的引用,Singleton-
ejb可以用于此目的。

@Stateless
public class AsyncEjb {

    @Resource
    private SessionContext sessionContext;

    @Asynchronous
    public Future<String> asyncMethod() {

        ...
        //Check if canceled by timer
        if(sessionContext.wasCancelCalled()) {
            ...
        }
        ...

    }
}

@Singleton
public class SingletonEjb {
    @EJB
    AsyncEjb asyncEjb;

    Future<String> theFuture;

    public void asyncMethod() {

        theFuture = asyncEjb.asyncMethod();

        //Create programatic timer
        long duration = 6000;
        Timer timer =
        timerService.createSingleActionTimer(duration, new TimerConfig());

    }

    //Method invoked when timer runs out
    @Timeout
    public void timeout(Timer timer) {
        theFuture.cancel(true);
    }
}

编辑(下面有新内容):

在glassfish中,您可以通过在管理控制台中设置以下属性来配置ejb-pool

  • 初始和最小池大小
  • 最大游泳池
  • 池调整大小数量
  • 池空闲超时

请参阅调整EJB池



 类似资料:
  • 我们班的任务是制作一个实现RESTful API调用的应用程序。我的应用程序有两个屏幕: 列出所有口袋妖怪类型的第一个屏幕(以解析的JSON形式) 列出有关所选类型的详细信息(以解析的JSON形式)的第二个屏幕 在这个项目的编写过程中,我们的任务是用“后台线程”指示代码段。我不确定“后台线程”在我的代码中的位置。 我找到了这个StackOverflow答案,它表示DispatchQueue中的代码

  • 问题内容: 如何配置JSch记录器的级别? 是否可以通过XML配置Log4J? 问题答案: JSch似乎没有使用任何已知的日志记录框架(我使用JSch v0.1.49,但最新版本是v0.1.51)或任何XML配置文件。所以这就是我所做的: 然后在使用JSch之前: 请注意,您可以使用所需的任何日志记录框架类(Log4j,Logback等)来代替and , 您可以在此处获得完整的示例:http :

  • 我使用的是一个从jar实现Serializable的类,为了确保不会出现编译器相关的问题,我给了它一个serialVersionUID私有静态final long serialVersionUID=123L; 然后我重新创建了jar,但现在当我在新jar中使用类时,它给了我一个例外: invalidClassException:com.placeiq.piqhash.piqdeviceID;本地类

  • AMH可以设置伪静态吗?在哪里设置啊? AMH可以设置伪静态吗?在哪里设置啊?你可以具体告诉我怎么操作吗? 打开你的ThinkPHP框架项目的route/route.php文件。在哪里打开?

  • 本文向大家介绍YAML 配置的优势在哪里 ?相关面试题,主要包含被问及YAML 配置的优势在哪里 ?时的应答技巧和注意事项,需要的朋友参考一下 YAML 现在可以算是非常流行的一种配置文件格式了,无论是前端还是后端,都可以见到 YAML 配置。那么 YAML 配置和传统的 properties 配置相比到底有哪些优势呢? 配置有序,在一些特殊的场景下,配置有序很关键 支持数组,数组中的元素可以是基

  • 我正在设置一个服务器(Radius)的模拟器(用于测试),它使用线程将查询发送到另一个服务器(LDAP)。查询需要以每秒x的速度执行。为此,我使用了一个带有callable的调度线程池执行器,这样我就可以创建callable并将它们提交给线程池执行。每个线程都应该打开自己的连接并使用它进行查询。问题是,每次使用连接时,我都希望相同的线程重复使用它。 澄清: 如果我有一个20个线程池,我希望创建和使