Suporte Transacional e o Spring Framework

Para o Spring Framework Versão 2.5 ou mais recente, é possível usar o modelo de transação declarativo, usar o suporte do Spring Framework para a extensão de programação AspectJ, ou usar o suporte a transações baseado em anotação. Para versões do Spring Framework anteriores à Versão 2.5, e para versões do servidor de aplicativos que não fornecem a interface UOWManager, você pode usar uma configuração do Spring Framework que suporte um conjunto restrito de atributos da transação.

Modelo de Transação Declarativo

O WebSphere Application Server Versão 6.0.2.19 ou mais recente e Versão 6.1.0.9 ou mais recente suporta o modelo de transação declarativo do Spring Framework para direcionar atualizações de recurso sob controle transacional. A classe WebSphereUowTransactionManager no Spring Framework 2.5 usa a interface UOWManager no servidor de aplicativos para gerenciar o contexto da transação. Porque a demarcação da transação é gerenciada por meio da interface UOWManager, um contexto apropriado de transação global ou local transaction containment (LTC) sempre está disponível quando um provedor de recursos é acessado. Para obter informações adicionais sobre a interface UOWManager e o suporte da Java™ Transaction API (JTA), consulte o tópico relacionado.

A classe WebSphereUowTransactionManager suporta os seguintes atributos de transação do Spring Framework:
  • PROPAGATION_REQUIRED
  • PROPAGATION_SUPPORTS
  • PROPAGATION_MANDATORY
  • PROPAGATION_REQUIRES_NEW
  • PROPAGATION_NOT_SUPPORTED
  • PROPAGATION_NEVER
Use a seguinte declaração para o suporte a transações do WebSphere Application Server:
<bean id="transactionManager"
   class="org.springframework.transaction.jta.WebSphereUowTransactionManager"/>
Um bean Spring que referencia a declaração anterior pode então usar a injeção de dependência do Spring Framework para usar o suporte a transações. Por exemplo:
<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>

A extensão de programação AspectJ

É possível usar o suporte do Spring Framework para a extensão de programação AspectJ. O código de exemplo a seguir declara um elemento <tx:advice/> com o seguinte comportamento transacional:
  • Todos os métodos que iniciam com a sequência get têm o atributo de transação PROPAGATION_REQUIRED.
  • Todos os métodos que iniciam com a sequência set têm o atributo de transação PROPAGATION_REQUIRES_NEW.
  • Todos os outros métodos usam as configurações de transação padrão.
Por exemplo:
<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>
Depois você pode aplicar as configurações à operação necessária declarando um ponto de corte. É possível aplicar as configurações a várias partes do aplicativo. O código de exemplo a seguir de aplica às configurações de qualquer operação que esteja definida na classe MyService.
<aop:config>
  <aop:pointcut id="myServiceOperation" 
                      expression="execution(* sample.service.MyService.*(..))"/>
  <aop:advisor advice-ref="txAdvice" pointcut-ref="myServiceOperation"/>
</aop:config>

Suporte a Transações Baseadas em Anotação

Para usar o suporte a transações baseado em anotação, você precisa do Java Platform, Standard Edition 5 (Java SE 5) ou mais recente. Portanto, é possível usar este método com o WebSphere Application Server Versão 6.1 ou mais recente.

Inclua a seguinte linha à configuração de Spring.xml:
<tx:annotation-driven/>
Marque quaisquer métodos que necessitam de atributos transacionais com a anotação @Transactional, por exemplo:
@Transactional(readOnly = true)
public String getUserName()
{ ...
}

É possível usar a anotação @Transactional para anotar apenas métodos públicos.

Suporte a Transações com Spring Framework anterior à Versão 2.5

É possível usar uma configuração do Spring Framework que suporte um conjunto restrito de atributos de transação.

É possível usar este método de suporte a transações com versões do Spring Framework anteriores à Versão 2.5 que não fornecem a classe WebSphereUowTransactionManager. Também é possível usar este método de suporta a transações com versões do WebSphere Application Server anteriores à Versão 6.0.2.19 e Versão 6.1.0.9 que não fornecem a interface UOWManager.

A configuração suporta os seguintes atributos de transação do Spring Framework:
  • PROPAGATION_REQUIRED
  • PROPAGATION_SUPPORTS
  • PROPAGATION_MANDATORY
  • PROPAGATION_NEVER
Use a seguinte configuração do Spring Framework:
<bean id="transactionManager" 
              class="org.springframework.transaction.jta.JtaTransactionManager">
  <property name="autodetectTransactionManager"value="false" />
</bean>
A configuração não suporta os seguintes atributos de transação do Spring Framework:
  • PROPAGATION_REQUIRES_NEW
  • PROPAGATION_NOT_SUPPORTED

O WebSphere Application Server não suporta o uso da classe org.springframework.transaction.jta.WebSphereTransactionManagerFactoryBean do Spring Framework.


Ícone que indica o tipo de tópico Tópico de Conceito



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cspr_data_access_tran1
Nome do arquivo: cspr_data_access_tran1.html