Vous pouvez indiquer qu'un type d'EJB (Enterprise JavaBeans) particulier ne doit pas synchroniser son état en stockage permanent avant chaque appel findBy en utilisant des variables d'environnement ou une interface de marqueur.
Pourquoi et quand exécuter cette tâche
Deux options sont disponibles pour indiquer qu'un type d'EJB spécifique
ne doit pas synchroniser son état avec le magasin persistant avant chaque appel findBy :
- Définissez une variable d'environnement EJB dans le descripteur de déploiement du bean.
- Demandez à la classe d'implémentation du bean d'implémenter une interface marqueur.
Cette seconde technique est particulièrement utile si vous disposez d'un
certain nombre d'implémentations de beans qui étendent tous une classe racine unique. Dans
ce cas, la classe racine peut implémenter l'interface marqueur pour que tous les beans qui
étendent cette classe héritent également de ce comportement.
Procédure
- Pour utiliser la technique incluant une variable d'environnement d'EJB, modifiez le descripteur de déploiement d'EJB à l'aide d'un outil de développement standard Java™ Platform, Enterprise Edition (Java EE). Pour plus d'informations sur les options de votre outil, voir
la rubrique Outils d'assemblage.
- Lancez l'outil.
- Sélectionnez le descripteur de déploiement d'EJB du bean que vous souhaitez utiliser.
- Créez une variable d'environnement EJB appelée com/ibm/websphere/ejbcontainer/disableFlushBeforeFind.
- Associez le type de cette variable à la valeur java.lang.Boolean.
- Associez la valeur à True pour empêcher la synchronisation pre-find
ou False pour activer le comportement par défaut.
- Sauvegardez les modifications.
- Pour utiliser une interface marqueur, codez l'implémentation du bean afin
d'implémenter l'interface com.ibm.websphere.ejbcontainer.disableFlushBeforeFind. La classe d'implémentation du bean ne doit pas implémenter directement l'interface.
N'importe quelle classe parent peut implémenter l'interface. Reportez-vous au package com.ibm.websphere.ejbcontainer de la section Reference > Developer > API documentation du centre de documentation.
Vérifiez l'intégrité des données pour les requêtes effectuées lors d'une transaction
Si vous décidez de désactiver la synchronisation "pre-find" automatique pour certains types de bean,
il est nécessaire que l'application utilise d'autres mécanismes pour s'assurer que les requêtes effectuées
lors de la transaction ne sont pas exécutées sur des données qui ne sont plus valides. Vous pouvez utiliser la méthode flushCache sur la classe com.ibm.websphere.ejbcontainer.EJBContextExtension (extension de javax.ejb.EJBContext) pour effectuer une synchronisation manuelle avec le magasin persistant à un intervalle défini par l'application.
Pour plus d'informations sur EJBContextExtension et les classes SessionContextExtension, EntityContextExtension et MessageDrivenContextExtension associées, reportez-vous au package com.ibm.websphere.ejbcontainer dans la section Reference > Developer > API documentation du centre de documentation.