30.01.2015 Views

des enterprise beans - Département Informatique

des enterprise beans - Département Informatique

des enterprise beans - Département Informatique

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!