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();

解决方案 »

  1.   

    我之所以问这个问题,是由于我原来在weblogic下面开发的ejb程序现在移植到jboss下面,发现原来使用的lookup("java:comp/env/ejb/InventoryHome");不能正常通过,而我换成直接lookup(“jndi-name”)就没有问题,所以很是奇怪!!
      

  2.   

    在WebLogic下写lookup(“jndi-name”)也没问题的,在jboss下lookup("java:comp/env/ejb/InventoryHome")报错可能是因为配置不对
      

  3.   

    之所以出错,因为你的jboss并没有把InventoryHome加到环境中,应该是这个问题
      

  4.   

    biggie(飞碟) ( ) :
    之所以出错,因为你的jboss并没有把InventoryHome加到环境中,应该是这个问题
    ====
    怎么把他加到环境中的??
    ====
    我原来在weblogic下面两种方法都可以得,在jboss下面写lookup(“jndi-name”)也没问题。就是在jboss下lookup("java:comp/env/ejb/InventoryHome")报错
      

  5.   

    XML文件的问题,楼主打开看看
      

  6.   

    http://www.chinajavaworld.com/bbsoffline/jinghuaforum44/44.html你去看看,楼上说法多有!
      

  7.   

    谢谢各位了。
    我也知道配置的,只是他妈的很郁闷,后来xml配置什么没改,我只是把ear包解开了发布,忽然就可以了。奇怪的很!
    揭帖吧