我使用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);
}
答案 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")
并取消可怕的家庭界面理念。