Groupe de commandes EJB

Le groupe de commandes EJB de l'objet AdminTask fournit des commandes que vous pouvez utiliser pour manipuler des beans enterprise.

removeAutomaticEJBTimers

Les applications ou les modules utilisent des annotations ou des éléments XML pour commander au serveur d'applications de créer automatiquement des temporisateurs EJB.

Les temporisateurs créés automatiquement sont stockés dans l'instance de planificateur associée au serveur dans lequel l'application ou le module s'exécute au moment où ils sont créés. Les plannings sont configurés serveur par serveur et, par conséquent, il est possible, pour chaque serveur de la topologie, d'utiliser sa propre instance de planificateur. Dans ce cas, l'instance de planificateur spécifique à un serveur donné se charge des temporisateurs EJB exécutés dans ce serveur.

Chaque instance de planificateur est associée à un jeu de tables de base de données. Si vous avez plusieurs instances de planificateur, configurez chacune d'elles avec un préfixe différent pour être sûr qu'elle sera mappée au jeu correct de tables de base de données.

Lors de la suppression de l'application ou du module ayant demandé la création automatique des temporisateurs EJB, ces derniers doivent être retirés de l'instance de planificateur correspondante. Si l'application ou le module étaient installés sur plusieurs serveurs, et si chacun de ces serveurs utilisait sa propre instance de planificateur, les temporisateurs doivent être retirés de chacune de ces instances. En d'autres termes, le retrait des temporisateurs EJB créés automatiquement se fait serveur par serveur.

Dans certains cas, le retrait ou la mise à jour de l'application ou du module a pour effet de retirer les temporisateurs EJB créés automatiquement de l'instance de planificateur. Dans ce cas, aucune action de l'utilisateur n'est nécessaire.

Dans d'autres cas, le retrait ou la mise à jour de l'application ou du module ne retire pas les temporisateurs EJB créés automatiquement de l'instance de planificateur. Vous devez alors les supprimer manuellement en utilisant la commande removeAutomaticEJBTimers.

Cette commande n'est prise en charge qu'en mode connecté. Dans une topologie de déploiement réseau, le gestionnaire de déploiement, l'agent de noeud et le serveur géré qui contient l'instance de planificateur doivent tous être en cours d'exécution. Dans une topologie de base, le serveur autonome doit être lancé.

Dans un scénario avec configuration lâche (autrement dit, les fichiers de l'application ou du module demeurent dans l'espace de travail de Rational Application Developer), vous devez supprimer manuellement vos temporisateurs EJB créés manuellement. Par ailleurs, les temporisateurs EJB créés programmatiquement, à ne pas confondre avec les temporisateurs créés automatiquement, ne sont pas retirés automatiquement, ni supprimés par cette commande.

Dans une topologie de déploiement réseau, lorsqu'un module particulier n'est installé que dans certains serveurs de la topologie, les temporisateurs créés automatiquement associés à ce module ne doivent être retirés que des instances de planificateurs associées à ces serveurs. Il n'est pas nécessaire de nettoyer une instance de planificateur si celle-ci correspond à un serveur dans lequel le module n'est pas installé.

Objet cible : Aucun

Paramètres requis :
-appName
Nom de l'application ayant demandé la création automatique des temporisateurs EJB que vous voulez supprimer. (Chaîne, obligatoire)

-serverName
Nom du serveur qui exécute l'application ou le module contenant les temporisateurs EJB créés automatiquement que vous voulez supprimer. Ce paramètre représente le nom logique d'un serveur d'applications, et non un nom d'hôte. (Chaîne, obligatoire)
Paramètres facultatifs :
-schedulerJNDIName
Ce paramètre représente le nom JNDI de l'instance de planificateur dans laquelle sont conservés les temporisateurs EJB créés automatiquement que vous voulez supprimer.

Une instance de serveur est toujours configurée pour utiliser une instance de planificateur particulière, chargée de gérer les temporisateurs EJB créés automatiquement. Vous pouvez désigner explicitement l'instance de planificateur à utiliser ou ne rien indiquer. Dans ce dernier cas, une instance de planificateur par défaut est utilisée.

Si l'instance de planificateur contenant les temporisateurs EJB à supprimer est la même que celle qui est actuellement configurée pour le serveur, vous pouvez omettre ce paramètre. Dans ce cas, la commande examine la configuration, découvre l'instance de planificateur actuellement configurée et l'utilise.

En revanche, si l'instance de planificateur actuellement configurée n'est pas celle qui contient les temporisateurs EJB à supprimer, vous devez désigner cette dernière en spécifiant son nom JNDI. (Chaîne, optionnelle)

-nodeName
Nom du noeud contenant le serveur. (Chaîne, obligatoire)
-moduleName
Nom du module ayant demandé la création automatique des temporisateurs EJB que vous voulez supprimer. Omettez ce paramètre si vous voulez supprimer tous les temporisateurs EJB de l'application, quel que soit le module dans lequel ils sont définis. Ce paramètre n'est utile et ne doit être spécifié que si vous voulez supprimer les temporisateurs dont la création automatique a été demandée par un module particulier de l'application, mais pas ceux des autres modules dans la même application. (Chaîne, optionnelle)

Valeur de retour : Aucune

Les informations suivantes vous aident à déterminer lorsqu'il est nécessaire d'utiliser cette commande :
  • WebSphere Application Server tente de supprimer des temporisateurs EJB créés automatiquement lorsque toutes les conditions suivantes sont réunies :
    • L'une des actions suivantes a lieu :
      • Désinstallation de l'application
      • Mise à jour de l'application
      • Désinstallation du module
      • Mise à jour du module
    • L'action a été exécutée en mode connecté (et non avec l'option wsadmin -conntype none).
    • Les serveurs concernés étaient tous lancés au moment de l'action.
      • Dans une topologie de déploiement réseau, le gestionnaire de déploiement, l'agent de noeud et le serveur géré qui contient les temporisateurs EJB créés automatiquement étaient tous en cours d'exécution.
      • Dans une topologie de base, le serveur autonome était lancé.
    • L'action complémentaire appropriée a été exécutée.
      • Dans une topologie de déploiement réseau, vous enregistrez vos changements et les synchronisez avec l'agent de noeud. Si vous enregistrez vos changements, sans les synchroniser, les temporisateurs EJB créés automatiquement ne sont pas supprimés. Le retrait des temporisateurs EJB n'a lieu que durant la phase de synchronisation.
      • Dans une topologie de base, vous enregistrez vos changements.
    • La base de données épaulant l'instance de planificateur était active.
  • WebSphere Application Server ne supprime pas les temporisateurs EJB créés automatiquement si l'une quelconque des conditions suivantes se vérifie :
    • Une action a été exécutée et n'était ni une mise à jour ni une désinstallation d'application ou de module.
    • L'action (même s'il s'agissait de désinstaller ou de mettre à jour une application ou un module) a été entreprise en mode déconnecté.
    • Les serveurs concernés n'étaient pas lancés.
      • Dans une topologie de déploiement réseau, le gestionnaire de déploiement, l'agent de noeud ou le serveur géré n'était pas en cours d'exécution.
      • Dans une topologie de base, le serveur autonome n'était pas lancé.
    • L'action complémentaire appropriée n'a pas été exécutée.
      • Dans une topologie de déploiement réseau, l'enregistrement des changements ou leur synchronisation n'a pas eu lieu.
      • Dans une topologie de base, les changements n'ont pas été enregistrés.
    • La base de données épaulant l'instance de planificateur n'était pas active.
Si WebSphere Application Server rencontre une erreur en tentant de supprimer d'un serveur des temporisateurs EJB créés automatiquement, il consigne un avertissement dans le fichier journal.

En cas d'erreur, ou si le serveur d'applications n'a pas tenté de supprimer les temporisateurs EJB créés automatiquement, ou encore si vous n'êtes pas certain qu'ils ont été supprimés, lancez la commande removeAutomaticEJBTimers pour les supprimer. Si les temporisateurs étaient bien supprimés de l'instance de planificateur, l'exécution de la commande aura été inutile, mais sans conséquences néfastes.

Dans un environnement en cluster, si votre cluster contient plusieurs noeuds et si chacun d'eux contient un serveur associé à la même instance de planificateur partagée à l'échelle du cluster, les temporisateurs créés automatiquement ne doivent être supprimés que d'un seul serveur. En effet, puisque l'instance de planificateur est partagée, lorsqu'elle est mise à jour, tous les serveurs qui l'utilisent voient le changement.

En conséquence, si un serveur dans un noeud particulier n'est pas lancé, il est probable qu'un message vous avertisse que les temporisateurs créés automatiquement n'ont pas pu être retirés de ce serveur. Cependant, si vous savez qu'il partage une instance de planificateur avec d'autres serveurs situés dans des noeuds différents et dont le nettoyage a réussi, vous n'avez rien d'autre à faire, car l'instance de planificateur commune a bien été mise à jour.

Et c'est la même chose si les serveurs membres d'un cluster font tous partie du même noeud et partagent une même instance de planificateur à l'échelle du cluster, et si un ou plusieurs d'entre eux (mais pas tous) ne sont pas lancés. Là encore, le serveur d'applications vous avertit par un message que les temporisateurs créés automatiquement n'ont pas pu être supprimés de ces serveurs. Cependant, comme ils partagent une instance de planificateur à l'échelle du cluster, si vous savez que le nettoyage a réussi pour au moins l'un d'entre eux, vous n'avez rien d'autre à faire, car l'instance de planificateur commune a bien été mise à jour.

Dans une topologie de déploiement réseau, si vous avez plusieurs serveurs, le type de planificateur utilisé (par défaut ou à configuration personnalisée) a un impact sur les performances de nettoyage des planificateurs. Le planificateur par défaut d'EJBContainer est propre à chaque serveur. Si vous utilisez l'instance de planificateur par défaut d'EJBContainer et si vous avez cinq serveurs, vous avez cinq instances de planificateur différentes et vous devrez toutes les nettoyer en cas de mise à jour ou de retrait d'une application. En revanche, si vous utilisez une seule et même instance de planificateur à configuration personnalisée, les temporisateurs créés automatiquement n'auront besoin d'être supprimés que de cette instance.

Exemple 1

Topologie :

  • Gestionnaire de déploiement exécuté sur le poste de travail A.
  • Agent de noeud exécuté sur le poste de travail B. Le noeud est appelé Noeud01.
  • Serveur géré server1 exécuté sur le poste de travail C.
  • Serveur géré server2 exécuté sur le poste de travail D.
  • La sécurité est activée.
  • server2 est actuellement configuré pour utiliser l'instance de planificateur qui contient les temporisateurs.

Contexte :

L'application testApp a été désinstallée, en mode connecté, à partir de la console d'administration. Vous voulez supprimer tous les temporisateurs créés automatiquement pour cette application, quel que soit le module qui les a demandés.

Le gestionnaire de déploiement, l'agent de noeud et le serveur server1 étaient lancés ; les temporisateurs EJB créés automatiquement ont donc été supprimés de server1. En revanche, server2 n'était pas actif, si bien que les temporisateurs EJB créés automatiquement n'ont pas pu être supprimés de ce serveur.

Vous devez donc procéder manuellement pour supprimer les temporisateurs EJB de server2.

Action :
  • Avec Jacl, à partir d'une session wsadmin connectée dans le gestionnaire de déploiement, entrez la ligne de code suivante :
    $AdminTask removeAutomaticEJBTimers "-appName testApp -serverName server2 -nodeName Node01"
  • Avec Jython, à partir d'une session wsadmin connectée dans le gestionnaire de déploiement, entrez la ligne de code suivante :
    AdminTask.removeAutomaticEJBTimers('-appName testApp -serverName server2 -nodeName Node01')

Exemple 2

Topologie :

  • server1 est un serveur autonome exécuté sur le poste de travail A. Le noeud est appelé Node01.
  • La sécurité administrative est désactivée.
  • server1 était configuré pour utiliser l'instance de planificateur jndi/sched_1 au moment où les temporisateurs EJB ont été créés automatiquement. Cependant, il est à présent configuré pour utiliser l'instance de planificateur jndi/sched_2.

Contexte :

Le module mod1 de l'application testApp vient d'être désinstallé, mais comme server1 était configuré pour utiliser l'instance de planificateur jndi/sched_2 au moment de cette désinstallation, les temporisateurs EJB créés automatiquement n'ont pas été retirés de l'instance de planificateur jndi/sched_1.

Vous devez donc procéder manuellement pour supprimer les temporisateurs EJB de l'instance de planificateur jndi/sched_1 sur server1.

A l'origine, l'application contenait deux modules, mod1 et mod2. Lors de leur déploiement, ces deux modules ont demandé la création automatique de temporisateurs EJB. Le module mod2 est toujours installé et vous avez encore besoin des temporisateurs EJB dont il a demandé la création. Vous voulez seulement supprimer les temporisateurs EJB demandés par mod1.

Action :
  • Avec Jacl, à partir d'une session wsadmin connectée dans le serveur autonome, entrez la ligne de code suivante :
    $AdminTask removeAutomaticEJBTimers "-appName testApp -moduleName mod1 -serverName server1 -nodeName Node01 -schedulerJNDIName jndi/sched_1"
  • Avec Jython, à partir d'une session wsadmin connectée dans le serveur autonome, entrez la ligne de code suivante :
    AdminTask.removeAutomaticEJBTimers('-appName testApp -moduleName mod1 -serverName server1 -nodeName Node01 -schedulerJNDIName jndi/sched_1')

Icône indiquant le type de rubrique Rubrique de référence



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rxml_configuringEJBTimerWorkManager
Nom du fichier : rxml_configuringEJBTimerWorkManager.html