1..通过JNDI查找
如ctx.lookup("java:comp/env/ejb3/InjectionLocalbean")语句通过JNDI查找获得了InjectionLocal的本地引用,这种方式需要先网JNDI ENC中添加一个名字为ejb3/InjectionLocalbean的注册项,然后才能通过ctx.lookup("java:comp/env/ejb3/InjectionLocalbean")获得InjectionLocal的本地引用。
ENC 是EJB容器里一个属于自己的内部注册表,这个内部注册表被称为Enterprise Naming Context(ENC),EJB容器可以在其中维护某些指向外部环境的引用。要往ENC中添加一个指向资源引用的注册项,可以通过配置ejb-jar.xml文件来实现。该文件必须放到jar文件的META-INF文件夹中。要从ENC中中获取资源的应用,可以通过注册表名进行JNDI查找,如(InjectionLocal il = (InjectionLocal)ctx.lookup("java:comp/env/InjectionLocalbean")),comp代表组件,java:comp/env指向该EJB的ENC,ejb3/InjectionLocalbean是在ENC中定义的注册项名称。
2..通过注入注解
如@EJB(beanName="InjectionLocalbean")InjectionLocal il;通过使用注入注解获得了InjectionLocal的本地引用。@EJB就是注入注解。