cajeroPU es el nombre de la unidad de persistencia
Código:
package componentes; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.*; import javax.naming.*; import javax.sql.DataSource; import java.util.*; import javax.annotation.*; import java.sql.*; import entidades.*; @Stateless public class GestionCuentasBean implements GestionCuentasBeanLocal { @PersistenceContext(name="cajeroPU") private EntityManager em; // Add business logic below. (Right-click in editor and choose // "Insert Code > Add Business Method") public boolean validaCuenta(String id) { boolean encontrado=false;// Clientes cliente = em.find(Clientes.class, id); if(cliente != null){ encontrado=true; } return encontrado; } }
A esta clase accedo a través de un Action de Struts, que es este:
Código:
Pues si accede desde el Action a una funcion del EJB no hay problema, el problema está cuando la función del EJB accede a la base de datos con el find() del EntityManager. Tiene que ser que me falta alguna anotación o algo en un sitio y no sé qué puede ser. ¿Me podéis ayudar? Muchas gracias package control; 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 javax.naming.*; import componentes.*; import entidades.*; import javabeans.*; import javax.ejb.EJB; import java.util.*; @EJB(name="gestion", beanInterface=GestionCuentasBeanLocal.class) public class ValidaAction extends org.apache.struts.action.Action { private static final String SUCCESS = "validado"; private static final String NOSUCCESS = "novalidado"; private static final String EX = "excepcion"; //@Override @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) /* throws Exception */{ GestionCuentasBeanLocal cl=null; try{ Context ctx=new InitialContext(); cl=(GestionCuentasBeanLocal)ctx.lookup("java:comp/env/gestion"); //para probar pongo directamente que valide la cuenta con id "1" if(cl.validaCuenta("1")){ return mapping.findForward(SUCCESS); } else{ return mapping.findForward(NOSUCCESS); } } catch(Exception e){e.printStackTrace();return mapping.findForward(EX);} } }