У меня есть требование, когда меня попросят загрузить как удаленные, так и локальные EJB с помощью JNDI-поиска, поэтому без аннотации @EJB.JNDI Поиск локального EJB (нет @ EJB)
Мой EJB определяется следующим образом:
@Remote
public interface MyObjectInterfaceRemote extends MyObjectInterface {
}
@Local
public interface MyObjectInterfaceLocal extends MyObjectInterface {
}
public interface MyObjectInterface {
// A bunch of methods which both remote and local ejbs will inherit
}
@Remote(MyObjectInterfaceRemote.class)
@Local(MyObjectInterfaceLocal.class)
public class MyObjectEJB implements MyObjectInterfaceLocal, MyObjectInterfaceRemote {
//implementation of all methods inherited from MyObjectInterface.
}
Я использую этот код для поиска удаленного EJB:
private MyObjectInterfaceRemote getEJB() throws NamingException {
InitialContext context = new InitialContext();
return (MyObjectInterfaceRemote) context.lookup(MyObjectInterfaceRemote.class.getName());
}
Он отлично работает, но если я сделаю еще один способ, как это:
private MyObjectInterfaceLocal getLocalEJB() throws NamingException {
InitialContext context = new InitialContext();
return (MyObjectInterfaceLocal) context.lookup(MyObjectInterfaceLocal.class.getName());
}
я
javax.naming.NameNotFoundException:
Context: Backslash-PCNode03Cell/nodes/Backslash-PCNode03/servers/server1,
name: MyObjectInterfaceLocal: First component in name MyObjectInterfaceLocal not found.
[Root exception is org.omg.CosNaming.NamingContextPackage.NotFound:
IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]
[...]
Что мне не хватает? Должен ли я использовать что-то другое для поиска локального ejb?
Примечание: Если я использую
@EJB
MyObjectInterfaceLocal ejb;
Местные получает EJB успешно загружена.
Да, для поиска локального интерфейса вам нужно прикрепить его к 'ejblocal:'. Проверьте здесь [Что такое имя JNDI по умолчанию для EJB в Websphere] (http://stackoverflow.com/a/24005631/3701228) и обратите внимание на префиксы ejblocal. Вы должны увидеть эти имена в журнале во время запуска приложения. – Gas