我的代码中的JNDI名称在哪里?

时间:2012-03-16 14:49:46

标签: java ejb jndi ejb-2.x

我使用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);
}

1 个答案:

答案 0 :(得分: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")

并取消可怕的家庭界面理念。