Annotations Seam

Annotations Seam

Nous présentons ici les principales annotations Seam, dont un certain nombre sont définies dans la spécification EJB 3.0. Annotations au niveau composant Les annotations suivantes permettent de définir un composant Seam. Elles apparaissent au niveau de la classe du composant. @Name Définit le nom du composant pour la classe (requise pour tous les composants Seam). @Name ( » MonComposant » ) @Scope Définit le contexte par défaut du composant. Les valeurs possibles sont définies par l’énumération ScopeType, soit EVENT, PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS , APPLICATION, STATELESS. Lorsque la portée n’est pas explicitement spécifiée, la valeur par défaut dépend du type de composant. Pour les beans session stateful, la valeur par défaut est CONVERSATION. Pour les composants JavaBeans la valeur par défaut EVENT. @Scope(ScopeType.CONVERSATION) @Role Permet à un composant Seam d’être relié à plusieurs variables contexte. Propriétés • name : nom de la variable contexte. • scope : portée de la variable contexte. @Role (name= » monRole » , scope=ScopeType.SESSION)   Désactive tous les intercepteurs Seam sur un composant particulier ou une méthode d’un composant. @JndiName Spécifie que la portée du composant est conversationnelle, ce qui signifie qu’aucune méthode du composant ne peut être appelée à moins qu’une conversation longue ne soit active. @JndiName(« ejb/session/MonBeanSession ») Public class MonBeanSession{ } @Startup Utilisée en combinaison avec @Scope, spécifie qu’un composant de portée application est démarré immédiatement lors de l’initialisation de l’application (utile par exemple pour démarrer certaines ressources critiques, comme les sources de données). Paramètres • depends : spécifie le nom du composant qui doit être démarré en premier. @Scope (SESSION) @Startup (depends= « org.jboss.seam.bpm.jbpm ») @Install Spécifie si le composant doit être ou non installé par défaut. L’absence de cette annotation indique que le composant doit être installé. Propriétés • dependencies : spécifie que le composant doit être installé si les composants listés comme dépendants sont aussi installés. • genericDependencies : spécifie qu’un composant doit être installé si un composant implémenté avec une classe particulière est installé. • classDependencies : spécifie la précédence du composant. S’il existe plusieurs composants de même nom, c’est celui ayant la plus haute priorité qui est installé. Les valeurs de priorités sont les suivantes (ordre ascendant) : – BUILT_IN : priorité sur tous les composants Seam installés. – FRAMEWORK : priorité d’utilisation pour les composants des frameworks qui étendent Seam. – APPLICATION : priorité sur les composants de l’application (priorité par défaut). – DEPLOYMENT : priorité d’utilisation pour les composants qui surchargent les composants de l’application dans un déploiement spécifique. – MOCK : priorité pour les objets simulés (MOCK) utilisés pour les tests. @Install(precedence=BUILT_IN)

Annotations pour la bijection

@In Spécifie que l’attribut d’un composant est injecté dans une variable de contexte au début de chaque invocation du composant. Si la variable de contexte est nulle, une exception est levée. Propriétés • value : spécifie le nom de la variable de contexte qui peut être substituée par une expression JSF EL, délimitée par le caractère #{…}. • create : spécifie que Seam doit instancier le composant avec le même nom que la variable de contexte si cette dernière est indéfinie pour tous les contextes. • required : spécifie que Seam doit lever une exception si la variable de contexte est indéfinie pour tous les contextes. @In(required=false) @In private User user @Out Spécifie que l’attribut du composant est outjected vers une variable de contexte une fois la méthode appelée (principe d’injection de dépendances). La variable spécifiée par l’annotation dans le contexte est automatiquement substituée après chaque appel. Si l’attribut est nul, une exception est levée. Propriétés • value : spécifie le nom de la variable de contexte, par défaut le nom de l’attribut du composant. JEES  • required : spécifie que l’attribut du composant Seam est outjected vers la variable de contexte à la fin de l’invocation. L’attribut peut être null (required=false) durant l’outjection. • scope : spécifie qu’un attribut du composant qui n’est pas du type de composant Seam doit être outjected vers un scope spécifique à la fin de l’invocation. Si aucun scope n’est explicitement spécifié, le scope du composant avec l’attribut @Out est utilisé (ou le scope EVENT si le composant est stateless). @In(create=true) @Out private User currentUser; @Factory Spécifie que la méthode du composant est utilisée pour initialiser la valeur de la variable de contexte spécifiée, lorsque la variable de contexte n’a pas de valeur. Propriétés • value : spécifie le nom de la variable de contexte, par défaut le nom de l’attribut du composant. • required : spécifie que l’attribut du composant Seam est outjected vers la variable de contexte à la fin de l’invocation. L’attribut peut être null (required=false) durant l’outjection. • scope : spécifie qu’un attribut du composant non-Seam doit être outjected vers un scope spécifique à la fin de l’invocation. Si aucun scope n’est explicitement spécifié, le scope du composant avec l’attribut @Out est utilisé (ou le scope EVENT si le composant est stateless). @Factory(« items ») public void getItems() { if ((items==null) || (index != firstItem) ){ getNextItems(); } Annotations pour les méthodes du cycle de vie du composant Ces annotations permettent au composant de réagir à son propre cycle de vie des événements sur les méthodes du composant. @Create Spécifie que la méthode doit être invoquée lorsqu’une instance du composant est instanciée par Seam. Les méthodes create sont uniquement applicables pour les JavaBeans et les beans session stateful. @Name(« DatabaseUtils ») Public class DatabaseUtils{ @Create() public void initDatabase(){ } } JEES Livre Page 360 Jeudi, 29. novembre 2007 12:48 12 Annotations Seam ANNEXE B 361 @Destroy Spécifie que la méthode doit être appelée lorsque le contexte se termine et que les variables de contexte associées au contexte sont supprimées. Les méthodes destroy sont uniquement supportées par les JavaBeans et les beans session stateful. @Name(« DatabaseUtils ») Public class DatabaseUtils{ @Destroy() public void closeDbResources(){ } } @Observer Spécifie que la méthode doit être appelée lorsqu’un événement sur un composant survient

Annotations pour la démarcation du contexte

Ces annotations s’appliquent à la gestion déclarative du contexte conversationnel. @Begin Marque la méthode comme démarrant une conversation « longue » Seam. Paramètres • join : valeur true ou false. Spécifie que si une conversation longue est déjà en progression, le contexte conversationnel est simplement propagé. Si false (défaut), l’invocation de la méthode begin dans le scope d’une conversation en cours provoque une exception. • Nested : valeur true ou false. Si actif (valeur true), et si une conversation est en cours, démarre une conversation imbriquée, au lieu de continuer dans le contexte de la conversation existante. • Flushmode : positionne le mode flush pour chaque session Hibernate Seam managée ou contexte persistant JPA créé durant la conversation (par défaut AUTO). • Pageflow : nom de la définition du processus jBPM définie pour le flux de la page pour une conversation particulière. // Specify that this method starts a long running conversation @Begin public String find() { hotel = null; String searchPattern = searchString == null ? « % » : ‘%’ + ➥searchString.toLowerCase().replace(‘*’, ‘%’) + ‘%’; JEES Livre Page 361 Jeudi, 29. novembre 2007 12:48 12 JEE5 ANNEXES 362 hotels = em.createQuery(« from Hotel where lower(name) like :search or ➥lower(city) like :search or lower(zip) like :search or lower(address) ➥like :search ») .setParameter(« search », searchPattern) .setMaxResults(50) .getResultList(); log.info(hotels.size() +  » hotels found »); return « main »; } @End Spécifie qu’une conversation « longue » Seam se termine et supprime les variables de contexte associées. Paramètres • Beforeredirect : valeur true ou false. Par défaut (valeur=false), la conversation n’est pas réellement détruite, à moins qu’une redirection n’ait été effectuée. Sinon (valeur true), spécifie que la conversation est détruite à la fin de la requête courante et que la redirection est traitée dans un nouveau contexte de conversation temporaire. @End @Destroy @Remove public String confirm() { if (booking == null || hotel == null) return « main »; em.persist(booking); log.info(« booking confirmed »); return « confirmed »; } @StartTask Démarre une tâche jPBM.

Formation et coursTélécharger le document complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *