Imprimir

JBoss y Hibernate

Tabla de contenidos

Objetivo

Mostrar las diferentes formas de configurar Hibernate dentro del JBoss

Pasos para configurar Hibernate en JBoss-4.0.2 sin EJBs

Crear un Data Source para la BD

Configurar hibernate.cfg.xml:

  • Se debe configurar a Hibernate para que tome el DataSource? del application server
    <property name="connection.datasource">java:/MySqlDS</property>
  • Seleccionar JTA como Transaction Factory
    <property name="transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property>
    De esta manera, la transaccionabilidad es manejada por JBoss. Se utiliza CMT. Esta funcionalidad es debida a que la interface Transaction de Hibernate implementa la funcionalidad de JTA y JDBC (se podría haber optado por este factory (JDBCTransactionFactory) pero la transaccionabilidad no sería manejada por el application server).

También es necesario setear el transaction manager lookup:

<property name="transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>

  • Se pueden setear las siguientes propiedades tambien:
    <property name="transaction.flush_before_completion">true</property>
    	<property name="transaction.auto_close_session">true</property>

Conectar el session factory name con JNDI

<property name="session_factory_name">hibernate/HibernateFactory</property>

  • Cambiar el ClassLoader WEB de Tomcat al de JBoss

Este es uno de los cambios de JBoss-4.0.1 a JBoss-4.0.2 . De esta manera se esta volviendo a lo anterior... Editar jboss-service.xml de ../JBOSS/xxxx/deploy/jbossweb-tomcat55.sar/META-INF: Pasar los dos atributos siguientes a true como se ve a continuación

<attribute name="Java2ClassLoadingCompliance">true</attribute>
	<attribute name="UseJBossWebLoader">true</attribute>
Thread del foro oficial de Hibernate donde se encontró la solución (external link)

Pasos para configurar Hibernate en JBoss-4.0.2 con EJBs

  1. Crear un DataSource para la BD. Es aconsejable que sea del tipo xa-datasource
  2. Configuración propia de hibernate
    <hibernate-configuration>
      <session-factory>
        <property name="session_factory_name">hibernate/HibernateFactory</property>
        <property name="hibernate.connection.datasource">java:/EbankSQLServer</property>
        <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
        <property name="hibernate.show_sql">false</property>
        <property name="hibernate.transaction.flush_before_completion">true</property>
        <property name="hibernate.transaction.auto_close_session">true</property>
        <property name="transaction.factory_class">org.hibernate.transaction.CMTTransactionFactory</property>
        <property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.JBossTransactionManagerLookup</property>
        <property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
        <mapping resource="path_a_los_hbm/miMapeo.hbm.xml" />
      </session-factory>
    </hibernate-configuration>
  3. ejb-jar.xml : hay que configurarlo para que los EJBs usen transacciones manejadas por el contenedor y para definir los atributos de la transacción. Para conocer un poco más, aca hay un articulo sobre Ejbs y Transacciones
    1. Todos los EJB deben tener <transaction-type>Container</transaction-type>. XDoclet usa este tipo por defecto
    2. Indicar para todos los session beans el atributo de la transaccion. Ej:
      <container-transaction >
            <method >
               <ejb-name>TestSession</ejb-name>
                <method-name>*</method-name>
             </method>
             <trans-attribute>Required</trans-attribute>
          </container-transaction>

Se puede agregar con el tag @ejb.transaction type="tipo_de_transaccion" de XDoclet. Creo que por defecto es Required que es el tipo mas usado

Referencias


Contribuyentes a esta página: flor9387 puntos  y diegom12669 puntos  .
Page last modified on Viernes 14 de Julio, 2006 18:58:37 EDT by flor9387 puntos .
El contenido de esta página esta licenciado bajo los términos del http://creativecommons.org/licenses/by-sa/2.5/legalcode.

Usuarios en línea

173 usuarios en línea