Feeds de los foros

En la página principal de los foros encontrarás los enlaces al logo feed feed general y al de cada uno de los foros.

Subscribete para mantenerte informado de los cambios y responde a las dudas siempre que te sea posible

Buscar en el foro

Foro Persistencia

feed Foro Persistencia Foro: Persistencia

Nuevo Tema Nuevo Tema

Problema con multiples sessionFactory 31/10/2008 11:40
diegolo69

 Buenas, hace unos días comente un problema que tuve con hibernate + web service http://www.javahispano.org/forum/persistencia/es/hibernate__ web_service__se_bloquea_al_enviar/ , iba a comentar la solución que encontre, pero no me deja responder al mensaje, asi que lo hago aqui y luego comento el problema que estoy teniendo ahora.

 La solucion a los bloqueos la encontre invocando yo mismo el web service http://code.google.com/p/saist/source/browse/trunk/src/mx/ip n/presentacion/ConexionConNegocios.java?r=817 y funciona perfectamente.

 El problema que tengo ahora es que como tengo que replicar datos en varias bases de datos, para las pruebas tengo 2 bases de datos distintas, pero con las mismas tablas, entonces leo de una y replico en la otra. Para esto, tengo dos archivos de configuracion hibernate.cfg.xml y me creo un sessionFactory con cada uno. En el debug se ve que para cada caso coge la url de la base de datos que corresponde, pero cuando termina la ejecucion, lo inserta en la base de datos de la que lo lee, no en la que deberia replicar

 ¿Alguien sabe pq puede ser?

Saludos y gracias.

#unapprove_message#
RE: Problema con multiples sessionFactory 03/11/2008 16:07
diegolo69

 Bueno, pues sigo con el mismo problema, a ver si alguien me puede ayudar, pq no se que ocurre.

  Meta las distintas sessionFactory en un HashMap o en variables estaticas, siempre inserta en la misma base de datos. Lo curioso es que si se observa los distintos objetos session al depurar, trabajan correctamente cada uno en la base de datos, pero al terminar el proceso lo inserta siempre en la misma. A ver si alquien alguna vez ha hecho algo parecido y me puede pasar un ejemplo, aunque ya he usado ejemplos que he visto, pero nada

 

 Este es el codigo:

 public class HibernateMultiplesConfig {
   
    public static final SessionFactory sessionFactory1;
    public static final SessionFactory sessionFactory2;
    
    static {
        ; try {
        ;     sessionFactory2 < span class="java_operator">= new AnnotationConfiguration().configure("/hibernateCliente.cfg.xml").buildSessionFactory();
    
        ; } catch (Throwable e) {
        ;     // Make sure you lo g the exception, as it might b e swallowed
        ;     System.err.println("Initial SessionFactory  creation failed." + e);
        ;     throw new ExceptionInInitializerError(e);
        ; }
    }
    
    static {
        ; try {
        ;     sessionFactory1 < span class="java_operator">=
 new AnnotationConfiguration().configure("/hibernateServicio.cfg.xml"< /span>).buildSessionFactory();
    
        ; } catch (Throwable e) {
        ;     // Make sure you lo g the exception, as it might b e swallowed
        ;     System.err.println("Initial SessionFactory  creation failed." + e);
        ;     throw new ExceptionInInitializerError(e);
        ; }
    }
    
        ; static {
        ;     try {
        ;         // Create the DEFAULT&nb sp;SessionFactory from hibernate.cfg.xml
        ;         SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
        ;         sessi onFactorys.put(DEFAULT, sessionFactory);
    
        ;     } catch (Throwable e) {
        ;         // Make sure you lo g the exception, as it might b e swallowed
        ;         System.err.println("Initial SessionFactory  creation failed." + e);
        ;         throw new ExceptionInInitializerError(e);
        ;     }
        ; }
 }
 
 
 
 public Session getSession()
        ;     throws HibernateException {
        ; return  HibernateMultiplesConfig.sessionFactory1.openSession();
 }
 
 
 
 public void insertarSolicitud(Solicitud solicitud) throws Exception {
    Session session = null;
    Transaction tx = null;
    
    try {

        ; session = getSession();
        ; tx = session.beginTransaction();
        ; 
        ; session.save(solicitud);
        ; 
        ; tx.commit();
    } catch (Exception e) {
        ; tx.rollback();
        ; throw new Exception(e);
    } finally {
        ; if (session != null) {
        ;     session.close();
        ; }
    }
}
#unapprove_message#
RE: Problema con multiples sessionFactory 03/11/2008 16:15
diegolo69

Bueno, pues sigo con el mismo problema, a ver si alguien me puede ayudar, pq no se que ocurre.

  Da igual donde meta las distintas sessionFactory en un HashMap o en variables estaticas,
  que siempre inserta en la misma base de datos. Lo curioso es que si se observa los distintos
  objetos session y transaction al depurar, trabajan correctamente cada uno en la base de datos,
  pero al terminar el proceso lo inserta siempre en la misma. A ver si alquien alguna vez ha
  hecho algo parecido y me puede pasar un ejemplo, aunque ya he usado ejemplos que he visto,
  pero nada siempre inserta en la misma.

 

 Este es el codigo:

 public class HibernateMultiplesConfig {
   
    public static final SessionFactory sessionFactory1;
    public static final SessionFactory sessionFactory2;
    
    static {
        ; try {
        ;     sessionFactory2 < span class="java_operator">= new AnnotationConfiguration().
        ;     configure("/hibernateCliente.cfg.xml").buildSessionFactory();
    
        ; } catch (Throwable e) {
        ;     // Make sure you lo g the exception, as it might b e swallowed
        ;     System.err.println("Initial SessionFactory  creation failed." + e);
        ;     throw new ExceptionInInitializerError(e);
        ; }
    }
    
    static {
        ; try {
        ;     sessionFactory1 < span class="java_operator">=
 new AnnotationConfiguration().
        ;     configure("/hibernateServicio.cfg.xml"< /span>).buildSessionFactory();
    
        ; } catch (Throwable e) {
        ;     // Make sure you lo g the exception, as it might b e swallowed
        ;     System.err.println("Initial SessionFactory  creation failed." + e);
        ;     throw new ExceptionInInitializerError(e);
        ; }
    }
    
        ; static {
        ;     try {
        ;         // Create the DEFAULT&nb sp;SessionFactory from hibernate.cfg.xml
        ;         SessionFactory sessionFactory = new AnnotationConfiguration().
        ;         confi gure().buildSessionFactory();
        ;         sessi onFactorys.put(DEFAULT, sessionFactory);
    
        ;     } catch (Throwable e) {
        ;         // Make sure you lo g the exception, as it might b e swallowed
        ;         System.err.println("Initial SessionFactory  creation failed." + e);
        ;         throw new ExceptionInInitializerError(e);
        ;     }
        ; }
 }
 
 
 // obtengo la session&nb sp;del servicio
 public Session getSession()
        ;     throws HibernateException {
        ; return  HibernateMultiplesConfig.sessionFactory1.openSession();
 }
 
 
 // inserto en el se rvicio
 public void insertarSolicitud(Solicitud solicitud) throws Exception {
    Session session = null;
    Transaction tx = null;
    
    try {

        ; session = getSession();
        ; tx = session.beginTransaction();
        ; 
        ; session.save(solicitud);
        ; 
        ; tx.commit();
    } catch (Exception e) {
        ; tx.rollback();
        ; throw new Exception(e);
    } finally {
        ; if (session != null) {
        ;     session.close();
        ; }
    }
}

 // obtengo la session&nb sp;del cliente
 public Session getSession()
    throws HibernateException {
 return     HibernateMultiplesConfig
.sessionFactory2.openSession();//HibernateMultiplesConfig.currentSessi on("cliente");
 }
    
 // leo en el client e
 public Solicitud getSolicitud(String idSolicitud) throws Exception {
    Solicitud solicitud = new Solicitud();
    Session session = null;
    Transaction tx = null;
    
    try{
        ; session = getSession();
        ; tx = session.beginTransaction();
        ; Query  query = session.createQuery("FROM Solicitud S W HERE S.idSolicitud = " + idSolicitud + 
        ;         " AND S.fechaBaja I S NULL");
        ; solicitud = (Solicitud) query.uniqueResult();
        ; 
        ; tx.commit();
    } catch (Exception e) {
        ; tx.rollback();
        ; throw new Exception(e);
    } finally {
        ; if (session != null) { 
        ;     session.close();
        ; }        ;    
    }
    return solicitud;
 } 
#unapprove_message#
#thread_expired#.
Sun Microsystem Logo NHT-Norwick Logo

© 2002-2007 Asociación javaHispano