Estou tentando fazer um lookup de acordo com a especificação EE5 mas estou tendo problemas, pois, o seguinte códgo retorna a variável nula:
protected @EJB CursoFacadeRemote cursoRemote;
Classe completa:
package faculdadeweb.action;
import faculdade.session.CursoFacadeRemote;
import java.util.List;
import javax.ejb.EJB;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
/**
*
* @author Luciano Pontes
*/
public class CursoAction extends DispatchAction {
protected @EJB CursoFacadeRemote cursoRemote;
public ActionForward doListarCursos(final ActionMapping mapping, final ActionForm form,
final HttpServletRequest request, final HttpServletResponse response){
List listaCursos = cursoRemote.findAll();
request.setAttribute("listaCursos", listaCursos);
return mapping.findForward("listaSuccess");
}
}
Classe Bean da interface CursoFacadeRemote:
package faculdade.session;
import faculdade.entity.Curso;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
/**
*
* @author Luciano Pontes
*/
@Stateless
public class CursoFacade implements CursoFacadeRemote {
@PersistenceContext
private EntityManager em;
/** Creates a new instance of CursoFacade */
public CursoFacade() {
}
public void create(Curso curso) {
em.persist(curso);
}
public void edit(Curso curso) {
em.merge(curso);
}
public void destroy(Curso curso) {
em.merge(curso);
em.remove(curso);
}
public Curso find(Object pk) {
return (Curso) em.find(Curso.class, pk);
}
public List findAll() {
return em.createQuery("select object(o) from Curso as o").getResultList();
}
}
Quando faço o lookup tradicional tudo funciona perfeitamente.
Algúem tem ideia de como fazer este lookup corretamente?