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

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

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

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

@Statelesspublic class AsyncEjb {    @Resource    private SessionContext sessionContext;    @Asynchronous    public Future<String> asyncMethod() {        ...        //Check if canceled by timer        if(sessionContext.wasCancelCalled()) { ...        }        ...    }}@Singletonpublic 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池



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5008658.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-14
下一篇2022-11-14

发表评论

登录后才能评论

评论列表(0条)

    保存