2010-11-01 3 views
0

J'ai deux applications. L'un est une interface utilisateur graphique Java Swing pour contrôler certains paramètres stockés dans la base de données. L'autre est une application côté serveur Java EE qui envoie des clients de flux XML en fonction des paramètres définis par l'interface graphique.Mécanisme d'événement/messagerie Hibernate/Java EE

J'aimerais que l'application côté serveur mette à jour son état dès que l'interface graphique de Swing persiste dans les modifications de la base de données. Quel serait le meilleur moyen d'y parvenir?

+0

merci pour votre commentaire très utile ... peut-être que je devrais cocher les réponses qui sont erronées ou des réponses de rattrapage pour les questions sans réponse? Merci pour votre contribution constructive. –

Répondre

1

Si le client lourd est mise à jour de votre base de données directement, vous avez deux options:

  • Utiliser la notification d'événement spécifique à la base de données. Les capacités et les techniques varient considérablement selon la base de données.
  • Demandez à l'application côté serveur d'interroger la base de données à la recherche de modifications.

En supposant que votre client lourd met à jour la base de données par le biais d'une application côté serveur, vous disposez de plusieurs options en fonction de la conception et la réalisation effective:

  • Vous pouvez mettre en œuvre un observable pattern dans vos objets de domaine afin que votre l'application serveur peut être notifiée chaque fois que des objets de domaine importants sont modifiés.

  • Si vous utilisez Hibernate, vous pouvez utiliser Hibernate interceptors and events.

  • Vous pouvez utiliser une solution de mise en cache, telle que Ehcache. (Si vous avez besoin d'une sémantique transactionnelle, alors peut-être JBoss Cache.)

  • Vous pouvez utiliser des solutions de mémoire partagée tels que Terracotta ou Hazelcast.

+0

Le client persistera directement dans la base de données. Puis-je utiliser une sorte de messagerie JMS pour alerter le serveur au lieu d'interroger? –

+0

Quelque chose devra lancer le message JMS. Demandez-vous si votre client Swing pourrait lancer le message JMS? Bien sûr, et l'application serveur pourrait alors recevoir le message. Indépendamment de l'utilisation de JMS (ce qui est juste une couche de communication alternative), je pense que c'est toujours la même question/réponse. Spécifiquement, qui/quoi lancera l'événement de notification en cas de modification. – kaliatech

0

Qu'en est-il faire l'application GUI Swing parler à l'application côté serveur qui parle à la db:

SwingGui -> ServerSideApp -> DB 
Clients <-> ServerSideApp <-> DB