java 调用ejb_java – 使用EJB异步方法的正确方法

我需要执行两项任务,即task1和task2,它们是同一业务流程的一部分.当task1完成时,我必须对最终用户做出响应,因此必须最小化响应时间.

我目前的方法是执行task1,一旦task1完成,就异步调用task2方法. task2很复杂,它的响应时间不受我的控制,因为它有一些外部依赖.

@Stateless

public class SessionBean1 {

@Inject

SessionBean2 sessionBean2;

public void doTask1(){

// task one stuff

sessionBean2.doTask2();

}

}

@Stateless

public class SessionBean2 {

@Asynchronous

public void doTask2(){

// do task2 stuff

}

}

在websphere 8.0(使用中的EJB容器)中,同步方法和异步方法由不同的线程池运行.

我最初的假设是,即使task2表现不佳,task1也没有任何影响,但遗憾的是,这不是真的.

如果task2执行得很糟糕,那么异步线程池中的所有线程都将被占用.这将导致task1等待异步线程空闲,因此task1会产生影响.

websphrere服务器日志中的消息:

线程池WorkManager.WebSphere_EJB_Container_AsynchMethods_Internal_WorkManager的请求缓冲区已达到其容量

我的问题是什么是实现我在这里想要实现的目标的正确方法.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值