2009-03-11 6 views
1

Hey! Je suis relativement nouveau à la fois Java EE et Stackowerflow, s'il vous plaît être aimable :-)Ejb 3, bean géré par message coopérant avec un bean de session avec état?

J'ai un tas de dispositifs déclenchant des messages Java à envoyer sur n'importe quel changement d'état. Ces appareils sont généralement actifs pendant environ 30 à 90 minutes. Chaque message d'événement contient un identifiant d'appareil en plus des détails de l'événement.

Dans mon application, un bean géré par message est associé à ces événements. Chaque fois que je reçois un événement, je dois aller dans la base de données pour rechercher des informations sur l'appareil.

Ce serait absolument génial si je pouvais associer un bean de session à état avec chaque périphérique actif! Si cela avait été une application web, j'aurais utilisé la session http pour stocker un handle ou une référence au bean stateful (j'ai-je raison?). Est-il possible que je peux l'archiver à partir de mon bean de message?

+0

Ces données de périphérique sont-elles modifiables? Que faites-vous si un appareil est modifié? Ensuite, l'état de l'entité que vous détenez dans la logique métier diffère de la représentation dans la base de données. À mon avis, les données ne devraient contenir qu'une seule place. – Timo

Répondre

2

Ce serait bien, sauf qu'il ne peut pas être fait comme vous l'avez expliqué. Les MDB (et les SLSB) sont sans état par définition, donc il est prudent de garder une conversation seulement pendant l'invocation.

Vous pourriez éventuellement casser la spécification et créer un attribut statique quelque part (peut-être dans la MDB elle-même) mais ce ne serait certainement pas portable, ni évolutif. Ma suggestion est d'activer la mise en cache au niveau de JPA (voir votre fournisseur de persistance de préférence pour plus de détails), de sorte que vous puissiez rechercher toutes les données dont vous avez besoin très rapidement (très rapidement). Ceci est portable et compatible avec les clusters. C'est ainsi que je l'utilise pour mes projets et j'en suis très content.

Espérons que ça aide.

0

Je ne suis pas très à l'aise de recommander des produits spécifiques, mais le serveur Terracotta ne répond-il pas à ces besoins?

Questions connexes