2010-06-18 5 views

Répondre

1

Vous ne savez pas exactement ce que vous voulez dire. D'abord, vous devez probablement faire la distinction entre les EJB sans état et avec état.

  • Stateless EJB sont bien, sans état, et ne doit pas contenir des données. L'application. le serveur peut décider de le détruire ou de le reconstruire à tout moment. Vous ne disposez pas réellement d'une référence à une instance particulière qui est créée lorsqu'elle est recherchée. L'application. le serveur maintient un pool d'EJB, et l'un d'eux est utilisé par invocation.

  • L'EJB stateful peut contenir des données. Vous détenez une référence à une instance spécifique, qui est créée lorsque le bean est recherché. Les méthodes de rappel peuvent être spécifiées avec @PostConstruct ou @PreDestroy (Ces rappels existent également pour les EJB sans état mais ont moins de sens).

Cela dit, si vous avez besoin d'effectuer quelque chose avant une méthode est appelée, je vous suggère d'utiliser un intercepteurs (en utilisant @Interceptor, travaille pour et sans état EJB stateful). Tout comme avec AOP, vous avez la possibilité d'effectuer quelque chose avant et après l'exécution de la méthode bean, par exemple rafraîchir le cache.

+0

Les données étant indépendantes du client, j'ai créé un bean sans état (peut-être à tort). J'ai besoin de lire le fichier de configuration avant l'invocation de la méthode. Cette configuration peut changer après le déploiement, j'ai donc besoin de mettre à jour ces données chaque fois que quelqu'un cherche mon EJB. – Filip

+0

Je vois maintenant. Les données de configuration ne sont pas des données métier, elles ne sont pas non plus complètement statiques dans votre cas. Je crains que le réalignement de la config à chaque fois soit une mauvaise performance. Vous pouvez stocker un horodatage et recharger les données si une certaine période s'est écoulée. Vous pouvez stocker la configuration, dans un champ d'instance, dans un champ statique, ou essayer un bean '@ Singleton' si vous utilisez EJB 3.1. Un champ d'instance signifie que vous aurez une config par instance de bean, un champ statique signifie qu'il n'y a qu'une seule config mais vous devez vous assurer de synchroniser les choses correctement. – ewernli

Questions connexes