Я пытаюсь запустить нить в Singleton EJB, но java.lang.IllegalStateException
бросается. Это мой (сокращенный) Класс:Могу ли я запустить ManagedThread в Singleton Enterprise Java Bean?
Singleton
@LocalBean
@Startup
public class WatcherEJB {
@Resource(name = "concurrent/masterActionsThreadFactor")
ManagedThreadFactory threadFactory;
Thread watcherThread;
@PostConstruct
public void startUp() {
//Setup the listener using the ThreadFactory
watcherThread = threadFactory.newThread(new Runnable() {
@Override
public void run() {
//System.out.println("Watcher Thread started");
}
});
watcherThread.start(); //java.lang.IllegalStateException thrown here
}
}
Я предполагаю, что есть проблема с когда я пытаюсь запустить объект Thread или же Java EE-не позволяют управляемые потоков в одиночках?
@perissf: Работа с потоками в контейнере EJB не рекомендуется в ** JAVA EE 6 и предварительного **. В ** JAVA EE 7 ** Вы можете работать с потоками с помощью 'ManagedThreadFactory',' ManagedExecutorService' и 'ManagedScheduledExecutorService'. http://docs.oracle.com/javaee/7/tutorial/doc/concurrency-utilities.htm#GKJIQ8 – pWoz
Вы правы. Я еще никогда не работал над этим. Я собираюсь удалить комментарий. – perissf