entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Error en JAVA, Servlet con hibernate

Buenas, primero presentarme en el sitio. Soy Jaime un desarrollador junior que me me formo constantemente.

Mi duda es la siguiente, estoy desarrollando un tpv web con java, hibernate, servlets y jquery(no estoy usando spring). Y lo que hago es hacer consultas mediante ajax a unos servlets y me muestra el siguiente error.

  org.hibernate.SessionException: Session was already closed

Hago varias llamadas ajax en el momento de carga del tpv. Traigo los productos, las categorias, vendedoresy zonas. Y estas cuatro llamadas funcionan unas veces si y otras no, si debugeo funciona casi siempre.

En la vista tengo lo siguiente:
<code>
< div id="pnlCategorias" class="inline marginTop >

</div>

</code>
En servlet

ArrayList<Categoria > c = new ArrayList<Categoria>();
    HibernateGenericDAO<Categoria> cat = new HibernateGenericDAO<Categoria>();

    c  = (ArrayList) cat.selectAll(Categoria.class);

El dao

      public List<T> selectAll(Class<T> entityClass) throws HibernateException {
    List<T> result = null;
    try {
        session = HibernateSession.getSession();
        result = session.createQuery("FROM " + entityClass.getSimpleName())
                .list();
    } catch (HibernateException he) {
        handleException(he);
    } finally {
        session.close();
    }
    return result;
}

Y el Jquery que uso de controlador

    $.post('TraerCategorias', {
    id: 2
}, function(responseText) {
    $('#pnlCategorias').html(responseText);

});

Hago esto para cada llamada. Con su respectivo servlet, controlador, dao y vista.

Gracias y un saludo.

1 Respuesta

2votos

kmiko Puntos250

Ya lo he solucionado amigos. El problema estaba en que se llamaban los servlets cuando aun no habáin acabados los demás.

    $.post('TraerZonas', {
        id: 2
    }, function(responseText) {
        $('#pnlZonas').html(responseText);
        //## traer las Categorias encima del contenedor

        $.post('TraerCategorias', {
            id: 2
        }, function(responseText) {
            $('#pnlCategorias').html(responseText);
            //## traer los productos por defecto

            $.post('TraerProductos', {
                id: 2
            }, function(responseText) {
                $('#pnlContenedor').html(responseText);
                //## traer los vendedores

                $.post('TraerVendedores', {
                    id: 1
                }, function(responseText) {
                    $('#pnlVendedores').html(responseText);

                    //## traer la session
                    $.post('TraerVendedoresSession', {
                        id: 1
                    }, function(responseText) {
                        $('#vendedorLogeado').html(responseText);
                         seguir();
                         $(".actual").click();
                    });
                }); 
            });  
        });  
    });
});

He tenido que hacer esto para que funcione. Gracias de todas maneras.

0voto

Peter comentado

Por favor selecciona la respuesta como correcta.

Saludos.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta