2009-04-05 8 views
5

J'appelle un bean de session sans état à distance depuis une application J2SE et je souhaite mettre en cache la référence au bean session afin de réduire le coût de la recherche. Est-ce correct? Dans EJB2, le modèle ServiceLocator était couramment utilisé pour mettre en cache des recherches sur des ressources distantes, mais EJB3 ne possède pas d'objets EJB Home séparés (qui étaient généralement mis en cache) et distants. Googling autour, une réponse commune à cela est d'utiliser l'injection EJB3, mais comme je fais un appel à un serveur EJB distant à partir d'un client J2SE, je ne peux pas utiliser l'injection.Est-ce que les références de bean de session sans état à distance peuvent être mises en cache dans EJB3?

Répondre

2

Oui, ils peuvent être mis en cache. Mais je ne sais pas si le comportement est défini ce qui se passera si vous avez une référence en cache et que le serveur est redémarré en dessous. Vous pouvez tester ce scénario, mais le comportement peut varier avec le conteneur.

1

Si le serveur disparaît, vos références deviennent invalides. En ce qui concerne la mise en cache pendant le cycle de vie normal, cela devrait fonctionner correctement. Je l'ai fait pendant des années, à la fois dans EJB2 et EJB3, et n'a jamais eu un problème. En général, je n'ai qu'une classe 'LookupServices' statique qui recherche la maison, ou retourne celle existante si elle est déjà là - et la stocke dans une carte.

Questions connexes