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

在不使用线程的情况下处理EJB3中的超时

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

在不使用线程的情况下处理EJB3中的超时

这更像是一个澄清请求,但是太长了,无法作为评论。

我不确定您现在是如何做的,因为从您编写的内容来看,仅使用请求处理线程似乎是可行的方法。像这样:

//Some webservice method (synchronous)public Result process(Blah blah){    try{        return getResult(TimeUnit.SECONDS, 10);    }catch(InterruptedException e){        //No result within 10 seconds!        throw new ServiceUnavailableException("blah");    }}

我不确定为什么要创建线程。如果由于该

getResult
方法根本不超时而被迫使用线程,则可能会发生线程泄漏。如果它在较长时间后超时,因此您想“简化”对用户的答复,那将是我考虑使用线程的唯一情况,就像我想象的那样。这可能会导致线程在负载下堆积,因此我努力避免这种情况。

也许您可以发布一些代码,让我们知道您为什么要在服务中创建代码?

另外,您的客户端界面是什么?听起来像是同步Web服务或其他东西?


在那种情况下,如果我是您,我将使用a

HashedWheelTimer
作为一个单例…这种机制应该可以很好地满足您的需求(这是一个实现)。但是,不幸的是,这似乎与EJB规范中对线程的禁止和对单例的禁止相冲突。实际上,如果您这样做,实际上并没有问题。例如,请参见此讨论。我们还在EJB应用程序中使用了单例模式。使用了JBoss。但是,如果这不是一个可行的选择,那么我可能会考虑通过定义一个新的Web服务(并将其部署在Web容器中或其他东西中)隔离其自己的JVM中的处理,然后从EJB应用程序中调用该服务。但是,这显然会导致性能下降,现在您将拥有另一个全新的应用程序。



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

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

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