Soporte de transacciones y Spring Framework

Para Spring Framework Versión 2.5 o posterior, puede utilizar el modelo de transacción declarativa, utilizar el soporte de Spring Framework para la extensión de programación AspectJ o utilizar el soporte de transacción basado en anotación. Para versiones de Spring Framework anteriores a la Versión 2.5 y para versiones del servidor de aplicaciones que no proporcionan la interfaz UOWManager, puede utilizar una configuración de Spring Framework que soporte un conjunto restringido de atributos de transacción.

Modelo de transacción declarativa

WebSphere Application Server Versión 6.0.2.19 o posterior y Versión 6.1.0.9 o posterior soporta el modelo de transacción declarativa de Spring Framework para dirigir las actualizaciones de recursos bajo el control de transacción. La clase WebSphereUowTransactionManager de Spring Framework 2.5 utiliza la interfaz UOWManager en el servidor de aplicaciones para gestionar el contexto de transacción. Dado que la demarcación de transacción se gestiona a través de la interfaz UOWManager, está siempre disponible un contexto de contenedor de transacciones locales (LTC) o transacciones globales apropiado cuando se accede a un proveedor de recursos. Para obtener más información sobre la interfaz UOWManager y el soporte de JTA (Java™ Transaction API - API de transacción Java), consulte el tema relacionado.

La clase WebSphereUowTransactionManager soporta los siguientes atributos de transacción de Spring Framework:
  • PROPAGATION_REQUIRED
  • PROPAGATION_SUPPORTS
  • PROPAGATION_MANDATORY
  • PROPAGATION_REQUIRES_NEW
  • PROPAGATION_NOT_SUPPORTED
  • PROPAGATION_NEVER
Utilice la declaración siguiente para el soporte de transacción de WebSphere Application Server:
<bean id="transactionManager"
   class="org.springframework.transaction.jta.WebSphereUowTransactionManager"/>
A continuación, un bean Spring que hace referencia a la declaración anterior puede utilizar la inyección de dependencia de Spring Framework para utilizar el soporte de transacción. Por ejemplo:
<bean id="someBean" class="some.class">
   <property name="transactionManager" >
      <ref bean="transactionManager"/>
   </property>
...
</bean>
<property name="transactionAttributes">
   <props>
      <prop key="*">PROPAGATION_REQUIRED</prop>
   </props>
</property>

Extensión de programación AspectJ

Puede utilizar el soporte de Spring Framework para la extensión de programación AspectJ. El código de ejemplo siguiente declara un elemento <tx:advice/> con el siguiente comportamiento de transacción:
  • Todos los métodos que empiezan con la serie get tienen el atributo de transacción PROPAGATION_REQUIRED.
  • Todos los métodos que empiezan con la serie set tienen el atributo de transacción PROPAGATION_REQUIRES_NEW.
  • Todos los demás métodos utilizan los valores de transacción predeterminados.
Por ejemplo:
<tx:advice id="txAdvice" transaction-manager="transactionManager">
  <tx:attributes>
    <tx:method name="get*" propagation="REQUIRED" read-only="true" />
    <tx:method name="set*" propagation="REQUIRES_NEW" />
    <tx:method name="*" />
  </tx:attributes>
</tx:advice>
A continuación, puede aplicar los valores a la operación necesaria declarando un "pointcut". Puede aplicar los valores a diversas partes de la aplicación. El siguiente código de ejemplo aplica los valores a cualquier operación que se defina en la clase MyService.
<aop:config>
  <aop:pointcut id="myServiceOperation" 
                      expression="execution(* sample.service.MyService.*(..))"/>
  <aop:advisor advice-ref="txAdvice" pointcut-ref="myServiceOperation"/>
</aop:config>

Soporte de transacción basada en anotación

Para utilizar el soporte de transacción basada en anotación, necesita Java Platform, Standard Edition 5 (Java SE 5) o posterior. Por consiguiente, puede utilizar este método con WebSphere Application Server Versión 6.1 o posterior.

Añada la línea siguiente a la configuración de Spring.xml:
<tx:annotation-driven/>
Marque los métodos que necesitan atributos de transacción con la anotación @Transactional, por ejemplo:
@Transactional(readOnly = true)
public String getUserName()
{ ...
}

Puede utilizar la anotación @Transactional para anotar sólo métodos públicos.

Soporte de transacciones con Spring Framework anterior a la Versión 2.5

Puede utilizar una configuración de Spring Framework que soporte un conjunto restringido de atributos de transacción.

Puede utilizar este método de soporte de transacciones con las versiones de Spring Framework anteriores a la Versión 2.5 que no proporcionan la clase WebSphereUowTransactionManager. También puede utilizar este método de soporte de transacciones con versiones de WebSphere Application Server anteriores a la Versión 6.0.2.19 y Versión 6.1.0.9 que no proporcionan la interfaz UOWManager.

La configuración soporta los siguientes atributos de transacción de Spring Framework:
  • PROPAGATION_REQUIRED
  • PROPAGATION_SUPPORTS
  • PROPAGATION_MANDATORY
  • PROPAGATION_NEVER
Utilice la siguiente configuración de Spring Framework:
<bean id="transactionManager" 
              class="org.springframework.transaction.jta.JtaTransactionManager">
  <property name="autodetectTransactionManager"value="false" />
</bean>
La configuración no soporta los siguientes atributos de transacción de Spring Framework:
  • PROPAGATION_REQUIRES_NEW
  • PROPAGATION_NOT_SUPPORTED

WebSphere Application Server no soporta la utilización de la clase org.springframework.transaction.jta.WebSphereTransactionManagerFactoryBean de Spring Framework.


Icon that indicates the type of topic Concept topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cspr_data_access_tran1
File name: cspr_data_access_tran1.html