no..no..no..
ref是为了给jar和jar之间的ejb互相调用的声明

解决方案 »

  1.   

    可是ref好像都是建在每个ejb-jar里面,不是针对一个jar包,甚至有些ejb还引用了同一jar中的其他ejb,这怎么解释?
      

  2.   

    是这样的,对部署在同一台机器上的ejb而言,从一个ejb调用另一个只需要在代码中用Context对象提供的lookup方法就可以了,像下面这样:
    Hashtable ht=new Hashtable();
    ht.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
    ht.put(Context.PROVIDER_URL ,"t3://localhost:7001");
    Context ctx=new javax.naming.InitialContext (ht);
    ctx.lookup(....);
    但在集群环境下,如果ejb A跟ejb B部署在不同的两台机器上,从A调用B就不能用上面的代码,应为地址不是localhost,端口也未必是7001,这种情况下ejb-ref就有用武之地了,你可以在ejb A的部署操作符里面配置B的ejb-ref,然后在A的代码里面这样生成B的home接口实例:
    Context ctx = new InitialContext();
    ctx.lookup("java:comp/env/BHome");
    当然,在同一台服务器上也可以通过这种方法来定位其他的ejb。注:以上仅仅是举例,不是可运行的代码
      

  3.   

    ……来迟了,楼上的大大说的粉不错
    可以看一下sun的designing enterprise applications with j2ee platform
    里面有一章专门讲deploy package的