Lorsque vous souhaitez appeler un EJBBean
à partir du client, vous devez d'abord obtenir une référence d'objet EJBHome
via la recherche JNDI. Ce code doit être exécuté chaque fois que vous avez besoin de travailler avec le EJBBean
et devient donc redondant et coûteux.Ai-je besoin d'une carte synchronisée pour implémenter le modèle EJBHomeFactory?
Pour résoudre ce problème, vous pouvez mettre en cache les références d'objet EJBHome
et les réutiliser encore et encore à partir du cache sans répéter la recherche JNDI.
Ceci est le EJBHomeFactory Pattern
(ou un modèle de localisateur de service plus générique).
La majorité des implémentations que j'ai vues utilisent un Map
synchronisé comme cache, ou un Hashtable
. Si le cache est construit quand l'application est déployée sur le serveur et qu'aucune modification n'est faite au cache par la suite (seules les méthodes get() sont effectuées) ai-je vraiment besoin d'un Map
synchronisé ou d'un HashMap
?
Je sais que HashMap
n'est pas sûr si au moins un des threads modifie la carte (il y a même un post SO sur ce here) mais dans ce cas, les threads n'effectuent que des lectures.
Donc, est-ce qu'un HashMap
est sûr à utiliser dans le EJBHomeFactory Pattern
?