2010-04-27 2 views
0

Nous (nt) avoir l'architecture suivante:opérations de partage entre les applications Web, qui fonctionnent dans le même cluster

  • Base.war sera une application mise en veille prolongée ressort autonome
  • Toutes les applications fonctionneront sous Glassfish , et peut être
  • regroupés
  • E1.war siégera au-dessus de Base.war, étendant ses fonctionnalités
  • il pourrait y avoir d'autres extensions (E2.war, E3.war, & hellip;) assis sur le dessus de Base.war
  • Soit guerres pourrait commencer une transaction, et les transactions pourrait étendre entre les guerres
  • sans arrêter Base.war, ou tout autre Ex.war, il devrait être possible de une mise à niveau Ey.war

y at-il une solution pour cela avec l'environnement printemps-hibernate-GlassFish?

+0

http://www.javaworld.com/javaworld/jw-01-2009/jw-01-spring-transactions.html – Bozho

+0

http://www.javaworld.com/javaworld/jw-04-2007/jw -04-xa.html – Bozho

Répondre

2

Questions à vous poser/équipe:

  1. Est-ce que notre soutien base de données XA?
  2. Le pilote JDBC prend-il en charge XA?
  3. La combinaison de Glassfish/base de données/JDBC fonctionnera-t-elle avec XA?
  4. Avons-nous vraiment besoin de transactions distribuées?

Je reviendrai au point 4 - ne faites pas de transactions distribuées. Vous devez être vraiment sûr que les transactions distribuées sont la meilleure solution pour vous. Ce n'est pas simple et la recommandation est de les éviter, si possible. Cela vient directement de Jürgen Höller, co-fondateur et développeur principal chez Spring. Spring ne prend pas en charge la propagation des transactions entre les processus, vous aurez donc besoin du conteneur pour le prendre en charge ou le faire vous-même manuellement.

+0

Eh bien, je ne suis pas sûr que j'ai besoin de transactions distribuées, mais comment puis-je fournir une solution, où vous pourriez appeler E1 (qui appelle en interne Base) et Base, par exemple. sur un WebService, et maintenir l'atomicité? – pihentagy

+0

Une approche (et je ne sais pas si cela correspond à votre domaine de problème ou non) est d'utiliser le passage de message asynchrone - le travail définitif sur ceci est http://www.enterpriseintegrationpatterns.com/ – SteveD

+0

N'a pas examiné, mais cela me permettra-t-il de coopérer avec des applications pour décider d'un résultat (commit/rollback) d'une action complexe (multi-applications)? Il semble être une solution pour un système avec des applications faiblement couplées. – pihentagy

Questions connexes