| = ejb-ref |
| :index-group: EJB |
| :jbake-date: 2018-12-05 |
| :jbake-type: page |
| :jbake-status: published |
| |
| = |
| Via annotation |
| |
| [source,java] |
| ---- |
| package org.superbiz.refs; |
| |
| import javax.ejb.EJB; |
| import javax.ejb.Stateless; |
| import javax.naming.InitialContext; |
| |
| @Stateless |
| @EJB(name = "myFooEjb", beanInterface = FooRemote.class) |
| public class MyEjbRemoteRefBean implements MyBeanInterface { |
| |
| @EJB |
| private BarRemote myBarEjb; |
| |
| public void someBusinessMethod() throws Exception { |
| if (myBarEjb == null) throw new NullPointerException("myBarEjb not injected"); |
| |
| // Both can be looked up from JNDI as well |
| InitialContext context = new InitialContext(); |
| FooRemote fooRemote = (FooRemote) context.lookup("java:comp/env/myFooEjb"); |
| BarRemote barRemote = (BarRemote) context.lookup("java:comp/env/org.superbiz.refs.MyEjbRemoteRefBean/myBarEjb"); |
| } |
| } |
| ---- |
| |
| = Via xml |
| |
| The above `@EJB` annotation usage is 100% equivalent to the following xml. |
| |
| [source,xml] |
| ---- |
| <ejb-ref> |
| <ejb-ref-name>myFooEjb</ejb-ref-name> |
| <remote>org.superbiz.refs.FooRemote</remote> |
| </ejb-ref> |
| <ejb-ref> |
| |
| <ejb-ref-name>org.superbiz.refs.MyEjbRemoteRefBean/myBarEjb</ejb-ref-name> |
| <remote>org.superbiz.refs.BarRemote</remote> |
| <injection-target> |
| <injection-target-class>org.superbiz.refs.MyEjbRemoteRefBean</injection-target-class> |
| <injection-target-name>myBarEjb</injection-target-name> |
| </injection-target> |
| </ejb-ref> |
| ---- |