des enterprise beans - Département Informatique
des enterprise beans - Département Informatique
des enterprise beans - Département Informatique
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Exemple du bean entité bank<br />
session. Mais, il faut noter les éléments suivants sur l’implémentation<br />
d’un bean entité utilisant la persistance gérée par le conteneur :<br />
• Le bean entité n’a pas d’implémentation <strong>des</strong> métho<strong>des</strong> find. C’est le<br />
conteneur EJB qui fournit les implémentations <strong>des</strong> métho<strong>des</strong> find pour<br />
les <strong>beans</strong> entité dont la persistance est gérée par le conteneur. Plutôt<br />
que de fournir l’implémentation dans la classe du bean, le <strong>des</strong>cripteur<br />
de déploiement contient <strong>des</strong> informations qui permettent au conteneur<br />
d’implémenter ces métho<strong>des</strong>.<br />
• Le bean entité déclare publics tous les champs gérés par le conteneur à<br />
la place du bean. Le bean CheckingAccount déclare name et balance comme<br />
champs publics.<br />
• La classe du bean entité implémente ces métho<strong>des</strong>, déclarées dans<br />
l’interface EntityBean : ejbActivate(), ejbPassivate(), ejbLoad(),<br />
ejbStore(), ejbRemove(), setEntityContext() et unsetEntityContext(). Le<br />
bean entité ne doit fournir que les implémentations squelette de ces<br />
métho<strong>des</strong>, mais il est possible d’ajouter du code spécifique à<br />
l’application. Le bean CheckingAccount enregistre le contexte renvoyé par<br />
setEntityContext() et libère la référence dans unsetEntityContext().<br />
Sinon, il n’ajoute aucun code aux métho<strong>des</strong> de l’interface EntityBean.<br />
• CheckingAccount inclut une implémentation de la méthode ejbCreate(),<br />
car cet <strong>enterprise</strong> bean permet aux appelants de créer de nouveaux<br />
comptes chèques. L’implémentation initialise également les deux<br />
variables d’instance, name et balance, avec les valeurs <strong>des</strong> paramètres.<br />
ejbCreate() renvoie une valeur null car, avec la persistance gérée par le<br />
conteneur, le conteneur crée la référence à renvoyer au client.<br />
• CheckingAccount fournit l’implémentation minimale de la méthode<br />
ejbPostCreate() mais cette méthode pourrait effectuer un plus ample<br />
travail d’initialisation si cela était nécessaire. Pour les <strong>beans</strong> dont la<br />
persistance est gérée par le conteneur, vous n’avez besoin que d’une<br />
implémentation minimale de ejbPostCreate() car elle est utilisée comme<br />
callback de notification.<br />
import javax.ejb.*<br />
import java.rmi.RemoteException;<br />
public class CheckingAccount implements EntityBean {<br />
private javax.ejb.EntityContext _context;<br />
public String name;<br />
public float balance;<br />
public float getBalance() {<br />
return balance;<br />
}<br />
public void debit(float amount) {<br />
if(amount > balance) {<br />
// marque la transaction en cours pour le rollback ...<br />
D é veloppement <strong>des</strong> <strong>beans</strong> entité 10-13