Question

Nous courons une session Stateless Bean pour récupérer des données à partir de divers endroits.

Quelle est la meilleure façon d'obtenir la mise en cache pour cette SLSB?

En utilisant des intercepteurs? En utilisant JBossCache?

Nous utilisons JBoss 5.0.1.

Était-ce utile?

La solution

Techniquement, vous êtes autorisé à conserver l'état dans un bean session sans état, il est juste que l'état peut être effacé par le conteneur entre les invocations. En tant que résultat, vous ne devriez pas garder le cache lui-même dans la fève, car il peut tout simplement disparaître.

Puisque vous utilisez JBoss Appserver déjà, JBossCache semblerait comme le grand vainqueur ici. Vous pouvez configurer des instances JBossCache utilisant des descripteurs de service jboss, et votre EJB pouvez ensuite rechercher l'instance de cache de JMX / JNDI. Il est tout compris dans JBossAS déjà, donc pas de dépendances supplémentaires nécessaires.

Utilisation JBossCache vous donne également l'avantage supplémentaire d'un cache distribué à travers un cluster, si c'est quelque chose d'intéressant pour vous.

Autres conseils

Une bean session steteless lui-même ne peut pas contenir des données entre les invocations comme son nom l'indique il est apatride. Pourtant. vous pouvez créer un bean session stateful qui tient votre cache et de transmettre ce haricot à votre méthode de bean sans état.

void someMethod(StateFulBean sfb){
  Cache cahce = sfb.getCache();
  ...

}

Lors de l'utilisation EBJ 3.1, vous pouvez également utiliser l'annotation Singleton et injecter le cache comme un singleton dans votre bean session sans état.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top