blob: 48fd1f020fc2d245c292aba64c70640c70f82a9f [file] [log] [blame]
= 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>
----