2010-03-09 8 views
2

J'ai un problème de conception.Notification entre les composants Java EE

Mon application a plusieurs composants Java EE, En termes simples on agit en tant que fournisseur de services (Non UI) et d'autres sont des consommateurs (UI webapp). Le consommateur reçoit les données de configuration du fournisseur de service (cela lit essentiellement les données de la base de données) pendant le démarrage et les stocke dans le cache.

Le cache est actualisé après une période périodique pour refléter les modifications apportées à la base de données.

Le problème

En dehors de la mise à jour du cache, je veux aussi informer les consommateurs quand quelqu'un change la DB que la configuration a été modifiée s'il vous plaît le recharger.

Quels mécanismes de notification puis-je utiliser pour y parvenir?

+0

Voir aussi http://stackoverflow.com/questions/2406984/what-are-the-alternatives-of-jms – ewernli

+0

BTW, I don Ne comprends pas ta question. Le cache est dans le consommateur? Vous avez un mécanisme pour actualiser le cache, donc le consommateur sait quand la configuration a changé, non? Sinon, utilisez un horodatage. Vous vérifiez périodiquement l'horodatage et si l'horodatage dans le cache et l'horodatage dans db diffèrent, vous rechargez la configuration. – ewernli

Répondre

3

Je voudrais aller avec des sujets/files d'attente JMS. Le producteur envoie un message "REFRESH_CACHE" sur un sujet et tous les consommateurs l'écoutent

+0

Les files d'attente ne fonctionneraient pas vraiment car elles sont point à point (PTP). En supposant qu'il y a plus d'un consommateur, vous voudriez utiliser un sujet (pub/sous) – mtpettyp

1

Je voudrais utiliser un sujet pour cela. Lorsque la base de données change, vous pouvez envoyer un message au sujet et tous les clients l'écoutent, peuvent afficher un message.

1

Jetez un oeil à la conception Observer. Vous pouvez stocker les consommateurs dans une liste et les informer quand quelque chose d'intéressant se produit.

0

Vous pouvez avoir besoin du modèle OBSERVER.
Il avertit les consommateurs (vos applications d'interface utilisateur) à l'aide de Callback. Vous pouvez utiliser JMS pour les notifications.