Vous devriez probablement acheminer vos transactions via JTA, même si vous utilisez une implémentation différente dans les coulisses. (Hibernate, Webphere, Weblogic, etc.) Idéalement, il devrait ressembler à ceci:
<bean id="transactionImpl" class="org.springframework.transaction.jta.WebSphereTransactionManagerFactoryBean"/>
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManager ref="transactionImpl"/>
</bean>
Si vous voulez utiliser le gestionnaire de transactions de mise en veille prolongée à la place, il suffit de remplacer la classe de la fève transactionImpl à la mise en veille prolongée un dans votre question initiale.
En ce qui concerne le gestionnaire est meilleur, je ne peux honnêtement pas penser à des raisons importantes de choisir l'un sur l'autre. La seule chose que je peux penser est que cela peut entrer en jeu si vous avez des serveurs d'applications en cluster qui partagent la charge, plutôt que d'être simplement un basculement. Peut-être que les transactions peuvent être partagées entre eux? Je ne sais pas. Si quelqu'un peut penser à autre chose, n'hésitez pas à me corriger.
EDIT: Il ressemble à WebSphereTransactionManagerFactoryBean (ce que je ci-dessus) n'a pas besoin d'être utilisé pour WebSphere 6.0 et, et selon le WebSphere Transaction Manager Spring Docs, vous devez utiliser WebSphereUowTransactionManager comme remplacement direct pour JTA. Ainsi, au lieu du gestionnaire de transactions Hibernate dans votre exemple original, utilisez simplement la classe WebSphereUowTransactionManager. Spring extrait le gestionnaire de transactions de l'arborescence JNDI du serveur d'applications. Vous devrez donc définir une propriété pour spécifier le nom JNDI. D'après ce que je peux dire, le gestionnaire de transactions WebSphere vous permet, entre autres, de suspendre les transactions. Personnellement, j'irais avec le gestionnaire de transactions du serveur d'applications, qu'il s'agisse de WebSphere, Weblogic ou Glassfish ou autre.
Merci d'avoir répondu. J'ai maintenant une meilleure idée de ce qui doit être fait. J'ai remarqué dans la littérature que WebSphereUowTransactionManager fonctionnera uniquement avec Spring 2.1RC1 et supérieur avec WAS 6.0 et supérieur. Malheureusement, nous utilisons Spring 2.0.7. –
Notez également que WebSphereTransactionManagerFactoryBean a été supprimé dans Spring 3.0 –