Параллелизм Утилита (JSR 236) была введен в Java EE 7.Java EE 7 - Инъекция в Runnable/вызываемый объект
Есть ли способ, как привнести свои EJBs в Runnable/вызываемый объект?
В частности, я хочу что-то вроде этого:
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());
}
}
Поле myEjb в MyTask всегда равно null. Полагаю, что может помочь JNDI-поиск, но есть ли способ, как это сделать?
Поймать немного, кажется, что вы должны просто сделать это. Пример: http://martinsdeveloperworld.wordpress.com/2014/02/25/using-java-ees-managedexecutorservice-to-asynchronously-execute-transactions/. Но, как уже сказано в другом комментарии, вы должны позволить серверу обрабатывать создание задачи. – Gimby