Где имя JNDI в моем коде? - PullRequest
3 голосов
/ 16 марта 2012

Я создал EJB2.0 с помощью Eclipse 3.7 IDE и развернул его на сервере приложений JBoss 5 (мое имя компонента - product).Я делаю обычный контекстный поиск (и другие вещи для вызова ejb), и я могу успешно вызывать EJB.Теперь мой вопрос: каково именно имя JNDI, и где оно использовалось во всем этом?Имя моего бина - имя JNDI, или это мое имя JNDI -> org.jnp.interfaces.NamingContextFactory.Где имя JNDI в этом ?????мой код: -

// initial code.............
Context  ctx = getContext();
Object obj=ctx.lookup("Product");
ProductHome home =(ProductHome)  javax.rmi.PortableRemoteObject.narrow(obj,ProductHome.class);
ProductRemote remote=home.create();

Product prd = new rohit.Product("PRDCamera",001,50.50) ;
remote.addProduct(prd);
remote.updateProduct(prd);
remote.removeProduct(001);
remote.findProduct(001);
remote.findAllProduct();


// getContext Method

public static InitialContext getContext() throws Exception{
    Properties pro = new Properties();
    pro.put(javax.naming.InitialContext.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
    pro.put(javax.naming.InitialContext.PROVIDER_URL,"localhost:1099");
    return new InitialContext(pro);
}

1 Ответ

3 голосов
/ 16 марта 2012

В вашем коде нет имени JNDI.

Вот как вы ищите EJB в EJB 2.0:

Object ejbHome = initialContext.lookup("java:comp/env/com/mycorp/MyEJB");

MyHome myHome = (MyHome)javax.rmi.PortableRemoteObject.narrow(
  (org.omg.CORBA.Object)ejbHome, MyHome.class);

В этом случае имя JNDI java:comp/env/com/mycorp/MyEJB.

В гораздо более разумном EJB 3.0 вы просто делаете

MyEJB myEJB = initialContext.lookup("java:comp/env/com/mycorp/MyEJB")

и избавляетесь от ужасной идеи домашнего интерфейса.

...