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.

Die Klasse "WebSphereUowTransactionManager" unterstützt die folgenden Transaktionsattribute von Spring Framework:
  • PROPAGATION_REQUIRED
  • PROPAGATION_SUPPORTS
  • PROPAGATION_MANDATORY
  • PROPAGATION_REQUIRES_NEW
  • PROPAGATION_NOT_SUPPORTED
  • PROPAGATION_NEVER
Verwenden Sie die folgende Deklaration für die Transaktionsunterstützung von WebSphere Application Server:
<bean id="transactionManager"
   class="org.springframework.transaction.jta.WebSphereUowTransactionManager"/>
Eine Spring-Bean, die auf die vorherige Deklaration verweist, kann anschließend mit der Abhängigkeitsinjektion von Spring Framework arbeiten, um die Transaktionsunterstützung zu verwenden. Beispiel:
<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

Sie können die Spring-Framework-Unterstützung für die Programmiererweiterung AspectJ verwenden. Der folgende Beispielcode deklariert ein Element <tx:advice/> mit dem folgenden Transaktionsverhalten:
  • 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.
Beispiel:
<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>
Anschließend können Sie die Einstellungen auf die erforderliche Operation anwenden, indem Sie einen Pointcut deklarieren. Sie können die Einstellungen auf verschiedene Teile der Anwendung anwenden. Der folgende Beispielcode wendet die Einstellungen auf alle Operationen an, die in der Klasse "MyService" definiert sind:
<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.

Fügen Sie der Konfigurationsdatei "Spring.xml" die folgende Zeile hinzu:
<tx:annotation-driven/>
Markieren Sie alle Methoden, die Transaktionsattribute erfordern, mit der Annotation @Transactional, z. B.:
@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.

Die Konfiguration unterstützt die folgenden Transaktionsattribute von Spring Framework:
  • PROPAGATION_REQUIRED
  • PROPAGATION_SUPPORTS
  • PROPAGATION_MANDATORY
  • PROPAGATION_NEVER
Verwenden Sie die folgende Konfiguration von Spring Framework:
<bean id="transactionManager" 
              class="org.springframework.transaction.jta.JtaTransactionManager">
  <property name="autodetectTransactionManager"value="false" />
</bean>
In dieser Konfiguration werden die folgenden Transaktionsattribute von Spring Framework nicht unterstützt:
  • 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".


Symbol, das den Typ des Artikels anzeigt. Konzeptartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cspr_data_access_tran1
Dateiname:cspr_data_access_tran1.html