Transaktionsunterstützung und das Spring-Framework
Für Spring Framework Version 2.5 oder höher können Sie das deklarative Transaktionsmodell, die Unterstützung von Spring Framework für die Programmiererweiterung AspectJ oder die annotationsbasierte Transaktionsunterstützung verwenden. Für Versionen von Spring Framework vor Version 2.5 und für Versionen des Anwendungsservers, die die Schnittstelle "UOWManager" nicht bereitstellen, können Sie eine Konfiguration von Spring Framework verwenden, die einen eingeschränkten Satz an Transaktionsattributen unterstützt.
Deklaratives Transaktionsmodell
WebSphere Application Server Version 6.0.2.19 oder höher und Version 6.1.0.9 oder höher unterstützen das deklarativ Transaktionsmodell von Spring Framework für die Durchführung von Aktualisierungen unter Transaktionssteuerung. Die Klasse "WebSphereUowTransactionManager" in Spring Framework 2.5 verwendet die Schnittstelle "UOWManager" im Anwendungsserver, um den Transaktionskontext zu verwalten. Da die Abgrenzung von Transaktionen über die Schnittstelle "UOWManager" verwaltet wird, ist immer ein globaler Transaktionskontext oder ein lokaler Transaktionseinschlusskontext verfügbar, wenn auf einen Ressourcenprovider zugegriffen wird. Weitere Informationen zur Schnittstelle "UOWManager" und zur JTA-Unterstützung (Java™ Transaction API) finden Sie im zugehörigen Artikel.
- 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>
Programmiererweiterung AspectJ
- Alle Methoden, die mit der Zeichenfolge get beginnen, haben das Transaktionsattribut PROPAGATION_REQUIRED.
- Alle Methoden, die mit der Zeichenfolge set beginnen, haben das Transaktionsattribut PROPAGATION_REQUIRES_NEW.
- Alle anderen Methoden verwenden die Standardtransaktionseinstellungen.
<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>
Annotationsbasierte Transaktionsunterstützung
Wenn Sie die annotationsbasierte Transaktionsunterstützung verwenden möchten, benötigen Sie Java Platform, Standard Edition 5 (Java SE 5) oder höher. Deshalb können Sie diese Methode mit WebSphere Application Server Version 6.1 oder höher verwenden.
<tx:annotation-driven/>
@Transactional(readOnly = true)
public String getUserName()
{ ...
}
Sie können die Annotation @Transactional verwenden, um nur allgemein zugängliche Methoden zu annotieren.
Transaktionsunterstützung mit Spring Framework vor Version 2.5
Sie können eine Konfiguration von Spring Framework verwenden, die einen eingeschränkten Satz an Transaktionsattributen unterstützt.
Sie können diese Methode der Transaktionsunterstützung mit Versionen von Spring Framework vor Version 2.5 verwenden, die die Klasse "WebSphereUowTransactionManager" nicht bereitstellen. Diese Methode der Transaktionsunterstützung kann auch mit Versionen von WebSphere Application Server vor Version 6.0.2.19 und Version 6.1.0.9 verwenden, die die Schnittstelle "UOWManager" nicht bereitstellen.
- 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 bietet keine Unterstützung für die Verwendung der Spring-Framework-Klasse "org.springframework.transaction.jta.WebSphereTransactionManagerFactoryBean".