У меня EJB-компонент, который работает с двумя интерфейсами, как показано ниже: Локальный интерфейс - для моего веб-приложения, а Удаленный интерфейс - для моего клиента приложения
@Stateless
public class CoreMainEJB implements CoreMainEJBRemote, CoreMainEJBLocal {
//...
}
, поэтому мой клиент приложения выглядит следующим образом.В этом случае происходит удаленный вызов метода
public class Main {
@EJB
private static CoreMainEJBRemote coreEJBRemote;
public static void main(String[] args) {
coreEJBRemote.process(args[0]);
}
}
Из моего веб-приложения я вызываю, как показано ниже.В этом случае происходит локальный вызов метода
@ManagedBean
@RequestScoped
public class DisplayInbound {
@EJB
private CoreMainEJBLocal coreMainEJBLocal;
public void processPackages() {
coreMainEJBLocal.process(...);
}
}
Итак, вот мой вопрос, Если EJB-компонент предоставляет только интерфейс @Remote, но в вашем веб-приложении вы вставляете EJB-компонент непосредственно вместо егоУдаленный интерфейс, будет ли это запускать удаленный или локальный вызов? Например:
@Stateless
public class CoreMainEJB implements CoreMainEJBRemote{
//...
}
, а в веб-приложении я делаю это
@EJB
private CoreMainEJB coreMainEJB;
public void processPackages() {
coreMainEJB.process(...); //Is this local or remote invocation here?
}