Support des transactions et Spring Framework

Pour Spring Framework version 2.5 et les versions suivantes, vous pouvez utiliser le modèle de transaction déclarative, la prise en charge de Spring Framework pour l'extension de programmation AspectJ ou le support des transactions basé sur les annotations. Pour les versions de Spring Framework antérieures à la version 2.5 et pour les versions du serveur d'applications qui n'ont pas l'interface UOWManager, vous pouvez utiliser une configuration de Spring Framework qui prend en charge une sélection limitée d'attributs de transaction.

Modèle de transaction déclarative

WebSphere Application Server version 6.0.2.19 ou versions ultérieures et version 6.1.0.9 ou ultérieures prennent en charge le modèle de transaction déclarative de Spring Framework afin de mettre à jour les ressources par commandes transactionnelles. La classe WebSphereUowTransactionManager de Spring Framework 2.5 utilise l'interface UOWManager dans le serveur d'applications pour gérer le contexte des transactions. Dans la mesure où la démarcation des transactions est gérée via l'interface UOWManager, un contexte de conteneur de transaction locale (LTC) ou de transaction globale approprié est toujours disponible quand un fournisseur de ressources est contacté. Pour plus d'informations sur l'interface UOWManager et la prise en charge de l'API JTA (Java™ Transaction API), voir la rubrique associée.

La classe WebSphereUowTransactionManager prend en charge les attributs de transaction Spring Framework suivants :
  • PROPAGATION_REQUIRED
  • PROPAGATION_SUPPORTS
  • PROPAGATION_MANDATORY
  • PROPAGATION_REQUIRES_NEW
  • PROPAGATION_NOT_SUPPORTED
  • PROPAGATION_NEVER
Utilisez la déclaration suivante pour activer le support des transactions de WebSphere Application Server :
<bean id="transactionManager"
   class="org.springframework.transaction.jta.WebSphereUowTransactionManager"/>
Un bean Spring qui référence la déclaration précédente peut alors utiliser l'injection de dépendance Spring Framework pour utiliser le support des transactions. Exemple :
<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>

Extension de programmation AspectJ

Vous pouvez utiliser la prise en charge de Spring Framework pour l'extension de programmation AspectJ. L'exemple de code suivant déclare un élément<tx:advice/> avec les modes transactionnels suivants :
  • Toutes les méthodes commençant par la chaîne get ont l'attribut de transaction PROPAGATION_REQUIRED.
  • Toutes les méthodes commençant par la chaîne set ont l'attribut de transaction PROPAGATION_REQUIRES_NEW.
  • Toutes les autres méthodes utilisent les paramètres de transaction par défaut.
Exemple :
<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>
Ensuite, vous appliquez les paramètres à l'opération demandée en déclarant un point de coupure. Vous pouvez appliquer ces paramètres à différentes parties de l'application. L'exemple de code suivant applique les paramètres à toutes les opérations définies dans la classe MyService.
<aop:config>
  <aop:pointcut id="myServiceOperation" 
                      expression="execution(* sample.service.MyService.*(..))"/>
  <aop:advisor advice-ref="txAdvice" pointcut-ref="myServiceOperation"/>
</aop:config>

Support des transactions basé sur les annotations

Pour utiliser le support des transactions basé sur les annotations, vous avez besoin de Java Platform, Standard Edition 5 (Java SE 5) ou une version ultérieure. Vous pouvez donc utiliser cette méthode avec WebSphere Application Server Version 6.1 ou une version ultérieure.

Ajoutez la ligne suivante au fichier de configuration Spring.xml :
<tx:annotation-driven/>
Marquez toutes les méthodes qui demandent les attributs transactionnels avec l'annotation @Transactional, par exemple :
@Transactional(readOnly = true)
public String getUserName()
{ ...
}

Vous pouvez utiliser l'annotation @Transactional pour annoter les méthodes publiques uniquement :

Support des transactions avec les versions de Spring Framework antérieures à la version 2.5

Vous pouvez utiliser une configuration de Spring Framework qui prend en charge une sélection limitée d'attributs de transaction.

Vous pouvez utiliser cette méthode de support des transactions avec les versions de Spring Framework antérieures à la version 2.5 qui ne possèdent pas la classe WebSphereUowTransactionManager. Vous pouvez également utiliser cette méthode avec les versions de WebSphere Application Server antérieures aux versions 6.0.2.19 et 6.1.0.9 qui n'ont pas l'interface UOWManager.

La configuration prend en charge les attributs de transaction Spring Framework suivants :
  • PROPAGATION_REQUIRED
  • PROPAGATION_SUPPORTS
  • PROPAGATION_MANDATORY
  • PROPAGATION_NEVER
Utilisez la configuration Spring Framework suivante :
<bean id="transactionManager" 
              class="org.springframework.transaction.jta.JtaTransactionManager">
  <property name="autodetectTransactionManager"value="false" />
</bean>
La configuration ne prend pas en charge les attributs de transaction Spring Framework suivants :
  • PROPAGATION_REQUIRES_NEW
  • PROPAGATION_NOT_SUPPORTED

WebSphere Application Server ne prend pas en charge la classe Spring Framework org.springframework.transaction.jta.WebSphereTransactionManagerFactoryBean.


Icône indiquant le type de rubrique Rubrique de concept



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cspr_data_access_tran1
Nom du fichier : cspr_data_access_tran1.html