2015-07-26 1 views
2

J'ai une certaine confusion sur l'utilisation de JTA dans Spring Framework sur Apache Tomcat et j'espère que quelqu'un va clarifier car après de nombreuses recherches, je n'arrive pas à trouver la bonne réponse pour le moment.Apache Tomcat 6 prend-il en charge JTA?

Je développe une application Web à l'aide Spring Framework pour fonctionner sur Apache Tomcat 6.

Je lis quelque part qui prend en charge de printemps pour JTA, mais il délègue au serveur d'applications JavaEE sous-jacente. Maintenant, je suis confus car i Tomcat n'est pas un serveur d'applications JavaEE complet - c'est simplement un conteneur de servlet et comme je crois qu'il ne fournit pas l'implémentation JTA comme le serveur d'applications JavaEE complet (Glassfish/Wildfly etc ...) Est-ce que.

Mais quand je fais quelque chose comme l'aspect transaction de celui-ci fonctionne:

@Transactional 
public class ServiceClassImpl implements ServiceInterface { 
// code here that involves transactions e.g. calling DAO code 
... 
} 

, je suis confus. J'espère que quelqu'un m'éclairera.

+0

duplication possible de [Comment utiliser le support JTA dans Tomcat 6 pour Hibernate?] (Http://stackoverflow.com/questions/2552612/how-to-use-jta-support-in-tomcat-6-for- hiberner) –

+0

Ingrédients similaires mais recette différente. Je pense que cette question demande comment utiliser JTA sur Tomcat 6. Alors que ma question se demande si Tomcat 6 autorise déjà JTA - parce que quand j'utilise l'annotation JavaEE @Transactional - cela fonctionne – SoftwareDeveloper

+0

Qu'est-ce que le fait que votre code fonctionne doit faire avec JTA? – zeroflagL

Répondre

2

La réponse est: NON. Tomcat 6.x (7 & 8) ne fournissent pas JTA prêtes à l'emploi car ils ne disposent pas d'un gestionnaire de transactions qui est requis en tant que composant séparé pour surveiller plusieurs ressources (par exemple sources de données).

La réponse mentionnée How to use JTA support in Tomcat 6 for Hibernate? donne déjà une liste de gestionnaires de transactions JTA supplémentaires qui peuvent être utilisés avec Tomcat. Spring prend en charge la gestion des transactions déclarative via un gestionnaire de transaction de plate-forme (TM) et fournit certaines implémentations (par exemple des sources de données) qui font que @Transactional fonctionne sur une seule ressource sans la TM supplémentaire.

Understanding the Spring Framework transaction abstraction fournit plus de détails et Spring Boot peut être facilement configuré pour exécuter les gestionnaires Atomikos ou Bitronix Transaction sur le Tomcat intégré.

-1

JTA vous fournit une prise en charge des transactions distribuées, mais si JTA n'est pas disponible comme dans Tomcat, vous pouvez toujours utiliser des transactions JDBC locales.