java:comp/env代表你的JVM的环境,从字面就可以理解
comp=computer
env=environment
ejb组件的调用可以通过JNDI也可以通过refference
区别在于后者更灵活,因为一个ref可以指向任何一个
EJB组件,当你需要替换EJB组件时尤其有用(不需要修改很多地方)
另外对于EJB2.0的Local interface,LocalHome,只能用
ref,因为他们不能以JNDI注册在JNDI服务上
---
典型的EJB查找:
Object obj = ctx.lookup("java:comp/env/ejb/InventoryHome");
InventoryHome inventoryHome =
(InventoryHome)PortableRemoteObject.narrow(obj, InventoryHome.class);
Inventory inventory = inventoryHome.findByStoreName(storeName);
---
InitialContext ctx=new InitialContext();
Object objRef=ctx.lookup("helloSessionbean");
helloSessionbeanHome home=(helloSessionbeanHome)javax.rmi.PortableRemoteObject.narrow(objRef,helloSessionbeanHome.class);
helloSessionbean hs=home.create();
String str=hs.helloEJB();
comp=computer
env=environment
ejb组件的调用可以通过JNDI也可以通过refference
区别在于后者更灵活,因为一个ref可以指向任何一个
EJB组件,当你需要替换EJB组件时尤其有用(不需要修改很多地方)
另外对于EJB2.0的Local interface,LocalHome,只能用
ref,因为他们不能以JNDI注册在JNDI服务上
---
典型的EJB查找:
Object obj = ctx.lookup("java:comp/env/ejb/InventoryHome");
InventoryHome inventoryHome =
(InventoryHome)PortableRemoteObject.narrow(obj, InventoryHome.class);
Inventory inventory = inventoryHome.findByStoreName(storeName);
---
InitialContext ctx=new InitialContext();
Object objRef=ctx.lookup("helloSessionbean");
helloSessionbeanHome home=(helloSessionbeanHome)javax.rmi.PortableRemoteObject.narrow(objRef,helloSessionbeanHome.class);
helloSessionbean hs=home.create();
String str=hs.helloEJB();
之所以出错,因为你的jboss并没有把InventoryHome加到环境中,应该是这个问题
====
怎么把他加到环境中的??
====
我原来在weblogic下面两种方法都可以得,在jboss下面写lookup(“jndi-name”)也没问题。就是在jboss下lookup("java:comp/env/ejb/InventoryHome")报错
我也知道配置的,只是他妈的很郁闷,后来xml配置什么没改,我只是把ear包解开了发布,忽然就可以了。奇怪的很!
揭帖吧