Java EE 7中引入了并发实用程序(JSR 236)。
有什么方法可以将我的EJB注入Runnable / Callable对象吗?
具体来说,我想要这样的东西:
带有业务逻辑的ejb
@LocalBean
public class MyEjb {
public void doSomeStuff() {
... do some stuff ...
}
}
我想在其中注入MyEjb实例的可运行/可调用类
public class MyTask implements Runnable {
@EJB
MyEjb myEjb;
@Override
public void run() {
...
myEjb.doSomeStuff();
...
}
}
开始新任务的对象
@Singleton
@Startup
@LocalBean
public class MyTaskManager {
@Resource
ManagedExecutorService executor;
@PostConstruct
void init() {
executor.submit(new MyTask());
}
}
MyTask中的myEjb字段始终为null。我想那里可以帮助JNDI查找,但是有什么合适的方法怎么做呢?
您必须给容器一个将EJB注入Task实例的机会。您可以使用以下代码中的动态实例来做到这一点:
@Stateless
public class MyBean {
@Resource
ManagedExecutorService managedExecutorService;
@PersistenceContext
EntityManager entityManager;
@Inject
Instance<MyTask> myTaskInstance;
public void executeAsync() throws ExecutionException, InterruptedException {
for(int i=0; i<10; i++) {
MyTask myTask = myTaskInstance.get();
this.managedExecutorService.submit(myTask);
}
}
因为您不是使用new运算符而是通过CDI的实例机制创建实例,所以容器在调用时会准备MyTask的每个实例myTaskInstance.get()
。
问题内容: 我已经了解了Java 和接口之间的区别。从Java 1.5开始,已将其他功能添加到接口,并已调用这些功能以保持向后兼容性。 我的问题是,现在我们有了接口,我们应该一直使用吗?不使用和使用的用例是什么? 问题答案: 两者都有其用途,并且都由java.util.concurrent中的Executor框架支持。Runnable已经存在了更长的时间,但是它仍然在使用并且不被阻止。 可调用程序
在Java中设计并发线程时,使用和接口有什么区别,为什么要选择其中一个?
本文向大家介绍Java中Runnable和Callable接口之间的区别,包括了Java中Runnable和Callable接口之间的区别的使用技巧和注意事项,需要的朋友参考一下 可运行和可调用两个功能接口。实现这些接口的类设计为由另一个线程执行。 可以使用Ruunable启动线程,这是启动新线程的两种方法:一种是通过子类化Thread类,另一种是实现Runnable接口。 线程类没有可调用的构造
本文向大家介绍实现Runnable接口和Callable接口的区别?相关面试题,主要包含被问及实现Runnable接口和Callable接口的区别?时的应答技巧和注意事项,需要的朋友参考一下 如果想让线程池执行任务的话需要实现的Runnable接口或Callable接口。 Runnable接口或Callable接口实现类都可以被ThreadPoolExecutor或ScheduledThreadP
javaee7-samples 是一个项目用来演示 Java EE 7 各种新特性的示例,有超过 160 个示例程序,包括: batch/batchlet-simple batch/chunk-checkpoint batch/chunk-csv-database batch/chunk-csv-database.clean batch/chunk-exception batch/chunk-ma
我想在部署完GlassFish之后运行一些进程。进程将每小时运行一次,它包含通过无状态bean CarService使用下面的findAll()从DB表中提取数据: 我怀疑持久性上下文在调用时没有正确加载。 我遵循了以下问题使用计时器在JSF托管bean中为计划任务生成线程 调度作业上的scheduledExecutorService,timerService和无状态EJB