Foros del Web » Programación para mayores de 30 ;) » Java »

Problemas con los métodos de EntityManager

Estas en el tema de Problemas con los métodos de EntityManager en el foro de Java en Foros del Web. Hola, estoy haciendo mis primeros pasos con EJB y Struts y tengo problemas para acceder a la base de datos. Tengo creada la bbdd, las ...
  #1 (permalink)  
Antiguo 25/01/2011, 04:37
 
Fecha de Ingreso: febrero-2007
Mensajes: 111
Antigüedad: 17 años, 2 meses
Puntos: 0
Problemas con los métodos de EntityManager

Hola, estoy haciendo mis primeros pasos con EJB y Struts y tengo problemas para acceder a la base de datos. Tengo creada la bbdd, las Entidades y aquí tengo el EJB de sesión que lo maneja.

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:
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);}
        
     
        
    }
}
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
  #2 (permalink)  
Antiguo 25/01/2011, 05:36
Avatar de pablor21  
Fecha de Ingreso: noviembre-2008
Ubicación: Montevideo - Uruguay
Mensajes: 197
Antigüedad: 15 años, 5 meses
Puntos: 13
Respuesta: Problemas con los métodos de EntityManager

Y qué error te tira?
__________________
Desarrolloador Freelance - http://www.mvdit.com.uy
  #3 (permalink)  
Antiguo 25/01/2011, 08:13
 
Fecha de Ingreso: febrero-2007
Mensajes: 111
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Problemas con los métodos de EntityManager

siempre me da exception, al llamar a find, si comento eso, no da error.

Gracias por contestar
  #4 (permalink)  
Antiguo 25/01/2011, 08:20
Avatar de pablor21  
Fecha de Ingreso: noviembre-2008
Ubicación: Montevideo - Uruguay
Mensajes: 197
Antigüedad: 15 años, 5 meses
Puntos: 13
Respuesta: Problemas con los métodos de EntityManager

Bueno, pero necesitamos saber qué error te da, la descripción del mismo, para poder ayudarte... tira el stackTrace del error
__________________
Desarrolloador Freelance - http://www.mvdit.com.uy
  #5 (permalink)  
Antiguo 25/01/2011, 10:26
 
Fecha de Ingreso: febrero-2007
Mensajes: 111
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Problemas con los métodos de EntityManager

ok, solo que hasta que llegue a casa no puedo hacerlo dentro de un par de horas, es que estoy en el trabajo y esto es de algo que esto aprendiendo por mi cuenta
  #6 (permalink)  
Antiguo 25/01/2011, 11:52
 
Fecha de Ingreso: febrero-2007
Mensajes: 111
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Problemas con los métodos de EntityManager

Aquí está el error

HTTP Status 500 -

type Exception report

message

descriptionThe server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: java.lang.NullPointerException

root cause

java.lang.NullPointerException

note The full stack traces of the exception and its root causes are available in the GlassFish v3 logs.
GlassFish v3
  #7 (permalink)  
Antiguo 25/01/2011, 16:39
Avatar de pablor21  
Fecha de Ingreso: noviembre-2008
Ubicación: Montevideo - Uruguay
Mensajes: 197
Antigüedad: 15 años, 5 meses
Puntos: 13
Respuesta: Problemas con los métodos de EntityManager

Una pregunta el id de cliente es un String?
__________________
Desarrolloador Freelance - http://www.mvdit.com.uy
  #8 (permalink)  
Antiguo 26/01/2011, 02:58
 
Fecha de Ingreso: febrero-2007
Mensajes: 111
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Problemas con los métodos de EntityManager

Sí, pero no te molestes más amigo que sin saber como, ya no falla find. De verdad que no lo entiendo porque no he hecho nada nuevo. Me puse a hacer unas pruebas en vez de con find con persist metiendo algunos registros nuevos en la bbdd aunque después los borré y borré persist para volver a poner find. Al rato probé ya de nuevo con find y no fallaba.

Gracias por tu ayuda

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:22.