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.
- 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>
A extensão de programação AspectJ
- 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.
<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>
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.
<tx:annotation-driven/>
@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.
- 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
O WebSphere Application Server não suporta o uso da classe org.springframework.transaction.jta.WebSphereTransactionManagerFactoryBean do Spring Framework.