@EJB(name="loginCount",beanInterface=com.test.LoginCount.class)
LoginCount count = (LoginCount)ctx.lookup("java:comp/env/loginCount");
请问,如果LoginCount 这个接口有两个实现类,那么怎么确定引用的是哪一个实现类呢?还是说,EJB只允许一个借口只有一个实现类????
在线等答案求大侠 解惑

解决方案 »

  1.   

    你有八个实现也不碍事,最终你接口是一个,被标注成Remote远程调用吧。@Remote(value=实现类.class) 这里就注明了被远程调用时是谁去做它的实现类
      

  2.   

    额,我们说的不一样,呢说的是session bean 的local remote接口具体是哪一个,而我说的是,EJB引用里面,怎么确定引用接口的实现类是哪一个~不过还是谢谢你~
      

  3.   


    你只要是有一个remote接口,这个接口就必须指定它的实现类,和接口是哪个有什么关系
    (LoginCount)ctx.lookup("java:comp/env/loginCount");
    这里的东西叫做jndiName,和EJB无关,如果你有十个EJB的Bean发布,就算他们是一个接口,也会有10个jndiName
      

  4.   

    我说的是ejb的引用,虽然也是通过jndi来查找。。你去翻下资料吧
    @EJB(name="loginCount",beanInterface=com.test.LoginCount.class)
    LoginCount count = (LoginCount)ctx.lookup("java:comp/env/loginCount");
    上面的@EJB不是用来修饰Session Bean 的一个属性,而是修饰SessionBean的。。
      

  5.   

    EJB的引用和JNDI不一样的~
    EJB的引用是为了LOCAL 接口的,因为jndi太耗资源,而且部分服务器没有对local接口实现jndi名所以有了EJB引用
    已经下班了。。准备弄清楚再走!
      

  6.   

    你是要想知道实例是哪个实现类的?接口 实例 = (接口)bean;
    你想知道实例是哪个类?用instanceof 就行了呀
      

  7.   

    路过见到问个问题,我在项目里面写接口,会自动加上@Remote这个注解,开始也没有在意,但后面发现有了这个注解,就不能实现方法的多态,去掉了就能~~~为什么?EJB也是这样的情况么?