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.
- 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 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.
<tx:annotation-driven/>
@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.
- 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 la classe Spring Framework org.springframework.transaction.jta.WebSphereTransactionManagerFactoryBean.