If the session bean that you create is going to be accessed by a client object that is not in the same JVM as the bean, then the bean needs to implement a remote business interface. You create a remote business interface by annotating the class with @Remote:
import java.util.List; import javax.ejb.Remote; @Remote public interface StudentRemote { public List<CourseDTO> getCourses(); }
The EJB implementing the remote interface is also annotated with @Remote:
@Stateful @Remote public class Student implements StudentRemote { @Override public List<CourseDTO> getCourses() { //get courses are return ... } }
Remote EJBs can be injected into managed objects in the same application using the @EJB annotation. For example, a JSF bean can access the previously mentioned student bean (in the same application) as follows:
import javax.ejb.EJB; import javax.faces.bean.ManagedBean; @ManagedBean public class StudentJSFBean { @EJB private StudentRemote student; }