栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在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池



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/400118.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号