2009-05-11 5 views
1

Cela peut sembler une question stupide ou simple, mais j'ai vraiment peu ou pas d'expérience avec le regroupement d'aucune sorte et je suis juste curieux de savoir si et comment un certain scénario est possible. Supposons que j'ai configuré un cluster de N instances Tomcat et que j'ai déployé mon application App1 sur l'ensemble des N instances.Dans un cluster Tomcat, comment partager des beans dans une application?

Que devrais-je faire pour pouvoir avoir certains beans dans l'application - pas tous, mais certains - être "partagés" à travers le cluster? Par exemple, si j'avais un bean pour WebsiteSettings, je voudrais avoir un processus de recherche où l'application pourrait demander le bean et en avoir une instance, et toutes les mises à jour des propriétés/valeurs du bean sont aussi disponible pour toutes les autres machines du cluster, c'est-à-dire que WebsiteSettings.getGreeting() retournera la même valeur sur toutes les N machines à chaque fois qu'il sera mis à jour.

Ai-je besoin de définir ces beans comme MBeans, et les App1 les rechercher via JMX? La prise en charge de cluster de Tomcat prendra-t-elle en charge la réplication automatique des modifications du MBean sur tous les nœuds du cluster?

Répondre

1

Une option consiste à utiliser un cache distribué partagé. Il existe plusieurs disponibles qui vous donneraient facilement cette fonctionnalité.

+0

Ceci est une approche intéressante que je ne l'avais pas vraiment pensé, merci. Je serais toujours intéressé de connaître certaines des méthodes plus «traditionnelles» bien que –

+0

Je pense que c'est l'approche standard ou traditionnelle à votre problème. – Robin

5

S'il vous plaît jeter un oeil à Terracotta - il vous permet d'avoir le même objet (d'une manière) résident sur de nombreuses instances, où toutes les mises à jour des autres nœuds se font sans couture au niveau JVM et non dans votre code.

Vous pouvez jeter un oeil à ce pour plus d'informations - What Is Terracotta

Questions connexes