Support de 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 ultérieure et version 6.1.0.9 ou ultérieure prennent en charge le modèle de transaction déclarative Spring Framework pour piloter les mises à jour de ressources sous contrôle transactionnel. 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 connexe.
- PROPAGATION_REQUIRED
- PROPAGATION_SUPPORTS
- PROPAGATION_MANDATORY
- PROPAGATION_REQUIRES_NEW
- PROPAGATION_NOT_SUPPORTED
- PROPAGATION_NEVER
<bean id="transactionManager"
class="org.springframework.transaction.jta.WebSphereUowTransactionManager"/>
<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
- 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.
<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>
<aop:config>
<aop:pointcut id="myServiceOperation"
expression="execution(* sample.service.MyService.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="myServiceOperation"/>
</aop:config>
Support de transactions basé sur les annotations
Pour utiliser la prise en charge des transactions basées sur les annotations, vous avez besoin de Java Platform, Standard Edition 5 (Java SE 5) ou version ultérieure. Par conséquent, vous pouvez utiliser cette méthode avec WebSphere Application Server version 6.1 ou ultérieure.
<tx:annotation-driven/>
@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 de prise en charge des transactions avec des versions de WebSphere Application Server antérieures à la version 6.0.2.19 et à la version 6.1.0.9 qui ne fournissent pas l'interface UOWManager.
- PROPAGATION_REQUIRED
- PROPAGATION_SUPPORTS
- PROPAGATION_MANDATORY
- PROPAGATION_NEVER
<bean id="transactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="autodetectTransactionManager"value="false" />
</bean>
- PROPAGATION_REQUIRES_NEW
- PROPAGATION_NOT_SUPPORTED
WebSphere Application Server ne prend pas en charge l'utilisation de la classe Spring Framework org.springframework.transaction.jta.WebSphereTransactionManagerFactoryBean.