Il existe deux types de beans de démarrage, à savoir d'application et de module.
Pourquoi et quand exécuter cette tâche
Fonction obsolète: Les fonctionnalités offertes par
les beans session singleton de démarrage (spécification EJB 3.1) rendent la
fonction propriétaire des beans de démarrage de WebSphere Application Server
obsolète.
depfeat
Un bean de démarrage de module est
un bean session chargé au lancement d'un fichier Jar EJB. Ce type
de bean permet à des applications Java EE (Java™ Platform Enterprise Edition) d'exécuter automatiquement une logique
métier chaque fois qu'un module EJB démarre ou s'arrête
normalement. Un bean de démarrage d'application est quant à lui un
bean session chargé au démarrage d'une application. Les beans
de démarrage d'application permettent à des applications Java EE
applications d'exécuter automatiquement une logique
métier chaque fois qu'une application démarre ou s'arrête
normalement.
Les beans de lancement sont
particulièrement pratiques lorsqu'ils sont utilisés avec des fonctions de
beans asynchrones. Par exemple, un bean de lancement peut créer une
alarme utilisant le service JMS
(Java
Message Service) pour publier régulièrement des messages de signaux
de présence sur une rubrique connue. Ceci permet à des clients ou à d'autres applications serveur de déterminer si l'application est disponible. Si vous utilisez le fournisseur JMS par défaut, reportez-vous à la rubrique
Configuration d'une application de sorte qu'elle attende le démarrage d'un
moteur de messagerie.
- Pour des beans de démarrage d'application, utilisez
l'interface home com.ibm.websphere.startupservice.AppStartUpHome afin
de désigner un bean comme bean de démarrage d'application.
Pour les
beans de démarrage de module,
utilisez l'interface
home com.ibm.websphere.startupservice.ModStartUpHome pour désigner un
bean comme bean de démarrage de module.
- Pour les beans de démarrage d'application, utilisez l'interface distante
com.ibm.websphere.startupservice.AppStartUp afin de définir les méthodes
start() et stop() sur le bean. Pour les beans de démarrage de module,
utilisez l'interface distante
com.ibm.websphere.startupservice.ModStartUp afin de définir les
méthodes start() et stop() sur le bean.
La méthode
start() du bean de démarrage est appelée lorsque le module ou
l'application démarre et contient une logique métier à exécuter
à ce même moment.
La méthode start() renvoie une valeur booléenne. True indique que
la logique métier figurant dans la méthode start() a été entièrement
lancée. A l'inverse, False indique que la logique métier figurant dans
la méthode start() n'a pas été entièrement lancée. Cette valeur indique à
Application Server que le démarrage de l'application a été abandonné.
Les méthodes stop() du bean de démarrage sont appelées lorsque le
module ou l'application s'arrête et contient une logique métier à
exécuter à ce même moment. Toute exception émise par une
méthode stop() est ignorée, mais journalisée. Aucune autre action n'est
prise.
Les méthodes start() et stop() ne doivent jamais
utiliser l'attribut de transaction MANDATORY. Aucune transaction globale n'a lieu sur l'unité d'exécution lorsque les
méthodes start() ou stop() sont appelées. Tout autre attribut TX_* peut être utilisé. En cas d'utilisation de
TX_MANDATORY, une exception est journalisée et le lancement de
l'application est abandonné.
Les méthodes start() et stop() utilisent le mode Run-As sur l'interface distante.
Le mode Run-As spécifie les justificatifs que doit utiliser le service de sécurité pour déterminer les permissions d'accès à différentes ressources appartenant à un principal. Si la sécurité est activée, le mode Run-As doit être défini sur toutes les méthodes appelées. L'identité du bean sans ce paramètre n'est pas définie.
Les méthodes
start() et stop() peuvent exécuter n'importe quel type de code, puisque le
modèle de programmation Application Server leur est entièrement accessible.
- Utilisez l'entier de propriété d'environnement facultatif, wasStartupPriority, pour définir l'ordre de démarrage des beans de démarrage multiple dans le même fichier JAR (Java Archive). Si la propriété d'environnement trouvée n'est pas du type approprié, le lancement de l'application est abandonné. Si aucune valeur de priorité n'est spécifiée, une priorité par défaut 0 est utilisée. Il est recommandé de spécifier la propriété de la priorité. Les beans qui ont spécifié une priorité sont triés par ce moyen.
Les beans dont les valeurs numériques de priorité sont inférieures sont
exécutés en premier. Les beans de priorités identiques sont exécutés dans un
ordre indéfini. Toutes les priorités doivent être des entiers
positifs. Les beans sont arrêtés dans l'ordre inverse de leur lancement. Les valeurs des priorités pour les beans de démarrage de module et
d'application s'excluent mutuellement. Tous les modules sont
démarrés avant que l'application ne soit considérée comme démarrée et les
méthodes start() des beans de démarrage de module dans une
application sont appelées avant les méthodes start() de beans de
démarrage d'application. De la même façon, toutes les
méthodes stop() des beans de démarrage d'application pour un
fichier JAR (Java Archive) sont appelées avant celles des beans de
démarrage de module pour ce fichier JAR.
Remarque : L'entier de la propriété d'environnement
wasStartupPriority
ne peut pas être défini à l'aide d'une commande ou de la console
d'administration. Cet entier de propriété d'environnement est une entrée d'environnement EJB
qui est définie par un développeur d'applications non administrateur. Définissez la valeur de type entier dans le fichier
ejb-jar.xml,
comme indiqué dans l'exemple suivant :
<env-entry>
<env-entry-name>wasStartupPriority</env-entry-name>
<env-entry-type>java.lang.Integer</env-entry-type>
<env-entry-value>3</env-entry-value>
</env-entry>
Comme pour toute autre entrée d'environnement EJB,
définissez une valeur
wasStartupPriority distincte pour chaque EJB.
- Pour les beans de démarrage de module, l'ordre de
démarrage des modules EJB est modifiable via la valeur Pondération de
démarrage associée à chaque module.
- Pour contrôler les utilisateurs pouvant appeler des
méthodes de beans de démarrage via la sécurité WebSphere, procédez
comme suit :
- Définissez les droits d'accès aux méthodes Start() et Stop() comme pour un module EJB. Consultez la section sur la définition de droits d'accès aux méthodes pour
des modules EJB.
- Vérifiez que l'utilisateur mappé vers le rôle de
sécurité défini pour les méthodes de beans de démarrage est le même
que celui identifié comme ID utilisateur du serveur dans le
registre d'utilisateurs.
Que faire ensuite
Reportez-vous à la rubrique
paramètres du service startup beans.