Привет, я работаю с openEJB на сервере Tomee jaxrs (1.7.4), у меня есть веб-проект и проект EJB, работающий на том же TomEE sever.JNDI LOOKUP Ошибка Tomee OpenEJB NameNotFoundException
Я развернул проект EJB в папке webapps сервера TomEE и вижу, что EJB запускаются при запуске сервера.
INFO: Enterprise application "C:\Apache_Software\OPEN_EJB\Server\webapps\OpenEjbServer" loaded.
Sep 08, 2016 10:08:39 AM org.apache.openejb.assembler.classic.Assembler createApplication
INFO: Assembling app: C:\Apache_Software\OPEN_EJB\Server\webapps\OpenEjbServer
Sep 08, 2016 10:08:39 AM org.apache.openejb.assembler.classic.JndiBuilder bind
INFO: Jndi(name=calcRemote) --> Ejb(deployment-id=calc)
Sep 08, 2016 10:08:39 AM org.apache.openejb.assembler.classic.JndiBuilder bind
INFO: Jndi(name=global/OpenEjbServer/calc!org.superbiz.stateless.basic.CalculatorBeanRemote) --> Ejb(deployment-id=calc)
Sep 08, 2016 10:08:39 AM org.apache.openejb.assembler.classic.JndiBuilder bind
INFO: Jndi(name=global/OpenEjbServer/calc) --> Ejb(deployment-id=calc)
Sep 08, 2016 10:08:39 AM org.apache.openejb.cdi.CdiBuilder initSingleton
Ниже один из @Stateless бобов в EJB проекта
@Remote
public interface CalculatorBeanRemote {
public int add(int a, int b);
}
@Stateless
public class CalculatorBean implements CalculatorBeanRemote {
@Override
public int add(int a, int b) {
return a + b;
}
}
из EJB проекта с использованием сервлетов я могу сделать JNDI Lookup, используя следующий код.
Properties p = new Properties();
p.put("java.naming.factory.initial","org.apache.openejb.client.LocalInitialContextFactory");
p.put("java.naming.provider.url", "ejbd://localhost:4201");
Context remoteContext = new InitialContext(p);
try {
Object ojb = remoteContext.lookup("calcRemote");
}catch(Exception e){}
При попытке сделать то же вызов, когда EJB является развертывание отдельно я получаю
javax.naming.NameNotFoundException: Name "calcRemote" not found.
at org.apache.openejb.core.ivm.naming.IvmContext.federate(IvmContext.java:197)
at org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:151)
at org.apache.openejb.core.ivm.naming.ContextWrapper.lookup(ContextWrapper.java:115)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
Как я могу сделать локальный или удаленный JNDI Lookup с веб-проекта в EJB, когда он развернут на тот же сервер TomEE или другой TomEE Server?
Что может быть причиной этой ошибки? Цените помощь
я попытался с RemoteInitialContextFactory и в этом случае я я получаю другую ошибку. ** ПРЕДУПРЕЖДЕНИЕ: RequestFailed {server = http: // localhost: 8080} JNDI_LOOKUP:/calc {error = Не удается открыть входной поток на сервер:} org.apache.openejb.client.ClientRuntimeException: Неверный ответ с сервера: -1 * * – user3676359
почему один? Примечание: вы также можете использовать имя global/OpenEjbServer/calc! org.superbiz.stateless.basic.CalculatorBeanRemote (от EE 6) –
, как вы предположили, я попытался все равно получить такую же ошибку: ПРЕДУПРЕЖДЕНИЕ: RequestFailed {server = http: // localhost: 8080} JNDI_LOOKUP: global/OpenEjbServer/calc! org.superbiz.stateless.basic.CalculatorBeanRemote {error = Не удается открыть входной поток на сервер:} org.apache.openejb.client.ClientRuntimeException: Неверный ответ с сервера: -1 – user3676359