3

我使用 Eclipse 3.7 IDE 创建了一个 EJB2.0,并将其部署在 JBoss 5 应用服务器中(我的 bean 名称是 product)。我正在做正常的上下文查找(和其他调用 ejb 的东西),并且我能够成功调用 EJB。现在我的问题是 JNDI 的名称到底是什么,它在哪里被用到了。我的 bean 名称是 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);
}
4

1 回答 1

3

您的代码中没有 JNDI 名称。

这是您在 EJB 2.0 中查找 EJB 的方式:

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")

并消除可怕的主页界面的想法。

于 2012-03-16T15:05:44.593 回答