Ver Mensaje Individual
  #3 (permalink)  
Antiguo 22/11/2010, 14:35
SirAndy
 
Fecha de Ingreso: noviembre-2010
Mensajes: 12
Antigüedad: 14 años, 1 mes
Puntos: 0
Problema conectando struts con hibernate

Bien, he revisado la clase Action, para ver si me puede estar produciendo un error desde ahí. Comenté las líneas que había agregado hasta antes que dejara de funcionar, pero creo que el problema no va por ahí. O al menos no soy tan hábil para descubrirlo.
Adjunto la clase Action. Y un Plugin que tengo.

LoginAction.java
Código:
package Controlador;

import Modelo.LoginForm;
import Beans.Usuario;
import java.util.List;
import Controlador.HibernateUtil;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hibernate.Hibernate;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;

/**
 *
 * @author Andy
 */
public class LoginAction extends org.apache.struts.action.Action {
    
    /* forward name="success" path="" */
    private static final String SUCCESS = "success";
    private static final String FAILURE = "failure";
    private static Log log = LogFactory.getLog(LoginAction.class);
    final public static String consulta = "FROM Beans.Usuario AS u WHERE u.login = ? AND u.password = ?";
    

    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        PrintWriter pw = response.getWriter();
        LoginForm loginForm = (LoginForm) form;
        Usuario usuarioBD = null;
        List usuarios = null;
        SessionFactory factory = null;
        Session session = null;
        String usuario = loginForm.getUser();
        String password = loginForm.getPassword();

        try
        {
            factory = (SessionFactory) servlet.getServletContext().getAttribute(HibernateUtil.KEY_NAME); //Esto qué es?
            session = factory.openSession();
            
            usuarios = (List)session.createQuery(consulta);
            
            if(usuario.equals("andy") && password.equals("andy"))
            {
                HttpSession sessionActual = request.getSession(true);
                sessionActual.setAttribute("USER", usuario);
                return mapping.findForward(SUCCESS);
            } else {
                return mapping.findForward(FAILURE);
            }
        } catch (HibernateException e) {
            log.error("Hibernate error");
            session.close();
        } finally {
            log.error("Hibernate exception");
            session.close();
            return mapping.findForward(FAILURE);
        }
        
    }


}
El plugin
Código:
package Controlador;


import java.net.URL;
import javax.servlet.ServletException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.action.PlugIn;
import org.apache.struts.config.ModuleConfig;
import org.hibernate.HibernateException;
import org.hibernate.MappingException;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil implements PlugIn {
   private Configuration config;
   private SessionFactory factory;
   private String path = "/config.hibernate.cfg.xml";
   private static Class clazz = HibernateUtil.class;
   public static final String KEY_NAME = clazz.getName();
   private static Log log = LogFactory.getLog(clazz);

   public void setPath(String path) {
      this.path = path;
   }

   public void init(ActionServlet servlet, ModuleConfig modConfig)
    throws ServletException {
      try {
         URL url = HibernateUtil.class.getResource(path);
         config = new Configuration().configure(url);
         factory = config.buildSessionFactory();
         servlet.getServletContext().setAttribute(KEY_NAME, factory);
      } catch (MappingException e) {

         log.error("mapping error", e);
         throw new ServletException();
      } catch (HibernateException e) {
         log.error("hibernate error", e);
         throw new ServletException();
      }
   }

   public void destroy() {
      try {
         factory.close();
      } catch (HibernateException e) {
         log.error("unable to close factory", e);
      }
   }
}
Creo que la excepción la está tirando, pero no puedo verla. Cómo podría hacer para imprimirla en la pantalla? Tal vez por ahí sería más fácil descubrirla, porque así es como programar a ciegas.

Última edición por SirAndy; 22/11/2010 a las 16:12