Я перепробовал все ресурсы в Интернете, но асинхронная аннотация Jboss не работает.Ниже приведен класс, откуда я пытаюсь вызвать тестер,
@Stateless
public abstract class TestApplicationBean extends OtherTest implements ESession{
@Inject
AsyncBeanTester tester;
void process() {
tester.test();
}
}
Вот класс тестера
@Stateless
public class AsyncBeanTester {
@Inject
SFAsyncRemote asyncRemote;
void test() {
asyncRemote.test();
}
}
И интерфейс,
@Remote
public interface SFAsyncRemote {
void test();
}
Инаконец, асинхронная реализация,
@LocalBean
@Stateless
@TransactionAttribute(TransactionAttributeType.NEVER)
public class ImplAsyncBean implements SFAsyncRemote {
private static final ELogger log = ELoggerFactory.getLogger(ImplAsyncBean.class);
@Override
@Asynchronous
public void test() {
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("It works");
}
}
Кажется, что асинхронная аннотация не имеет никакого эффекта.Однако я звоню через прокси-сервер Jboss, поэтому Jboss должен был выполнить функцию асинхронно.Однако идентификатор потока одинаков, и вся программа ждет 10 секунд, прежде чем перейти к завершению.Что я здесь не так делаю?Более того, когда я пытаюсь использовать @EJB вместо @Inject на asyncRemote
, я получаю Could not resolve @EJB injection for @javax.ejb.EJB(name=, lookup=, description=, beanName=, beanInterface=class java.lang.Object, mappedName=) on com.bankframe.bp.retail.solutionset.impl.maintainculsfapplication.SFAsyncRemote com.bankframe.bp.retail.solutionset.impl.maintainculsfapplication.AsyncBeanTester.asyncRemote