Génération de la liste des modules d'une application installée à l'aide de l'outil de scriptage wsadmin
Utilisez la commande listModules de l'objet AdminApp pour lister les modules d'une application installée.
Pourquoi et quand exécuter cette tâche
Vous pouvez exécuter la commande listModules pour savoir quels modules se trouvent dans une application installée.
Procédure
Exemple
L'exemple suivant répertorie tous les modules de toutes les applications d'entreprise installés sur le serveur server1 dans un noeud appelé node1.
Un astérisque (*) signifie que le module est installé sur server1 et node1 et sur un autre serveur ou noeud. Un signe plus (+) signifie que le module est installé sur server1 et node1 uniquement.
1 #-----------------------------------------------------------------------------------
2 # définition de variables pour conserver le nom du serveur et du noeud
3 #------------------------------------------------------------------------------
4 set serverName server1
5 set nodeName node1
6 #-------------------------------------------------------------------------------
7 # définition de 2 listes globales pour conserver les modules
8 #--------------------------------------------------------------------------------
9 set ejbList {}
10 set webList {}
11
12 #----------------------------------------------------------------------------------------
13 # extrait tous les objets de déploiement et les affecte à la variable de déploiement
14 #-----------------------------------------------------------------------------------------
15 set deployments [$AdminConfig getid /Deployment:/]
16
17 #-----------------------------------------------------------------------------------------
18 # les lignes 22 à 148 itèrent via tous les objets de déploiement pour extraire les modules
19 # et effectuer un filtrage afin de répertorier les applications ayant au moins un module installé
20 # dans server1, sur le noeud myNode
21 #-----------------------------------------------------------------------------------------
22 foreach deployment $deployments {
23
24 # ------------------------------------------------------------------------------------
25 # réinitialise les listes mentionnant les modules pour chaque application
26 #-------------------------------------------------------------------------------------
27 set webList {}
28 set ejbList {}
29
30 #------------------------------------------
31 # extrait le nom de l'application
32 #------------------------------------------
33 set appName [lindex [split $deployment (] 0]
34
35 #------------------------------------------
36 # extrait deployedObjects
37 #------------------------------------------
38 set depObject [$AdminConfig showAttribute $deployment deployedObject]
39
40 #--------------------------------------------
41 # extrait tous les modules dans l'application
42 #---------------------------------------------
43 set modules [lindex [$AdminConfig showAttribute $depObject modules] 0]
44
45 #---------------------------------------------------------------------------------------------
46 # initialise des listes pour enregistrer tous les modules dans la liste adéquate à laquelle ils appartiennent
47 #---------------------------------------------------------------------------------------------
48 set modServerMatch {}
49 set modServerMoreMatch {}
50 set modServerNotMatch {}
51
52 #-----------------------------------------------------------------------------------------
53 # les lignes 55 à 112 itèrent via tous les modules pour
extraire targetMappings
54 #------------------------------------------------------------------------------------------
55 foreach module $modules {
56 #--------------------------------------------------------------------------------------
57 # définition de balises pour effectuer un filtrage et
extraire des modules pour server1 sur node1
58 #--------------------------------------------------------------------------------------
59 set sameNodeSameServer "false"
60 set diffNodeSameServer "false"
61 set sameNodeDiffServer "false"
62 set diffNodeDiffServer "false"
63
64 #--------------------------------------------
65 # extrait targetMappings
66 #--------------------------------------------
67 set targetMaps [lindex [$AdminConfig showAttribute $module targetMappings] 0]
68
69 #---------------------------------------------------------------------------------------
70 # les lignes 72 à 111 itèrent via tous les
targetMappings pour extraire la cible
71 #---------------------------------------------------------------------------------------
72 foreach targetMap $targetMaps {
73 #------------------------------
74 # extrait la cible
75 #------------------------------
76 set target [$AdminConfig showAttribute $targetMap target]
77
78 #--------------------------------------------------
79 # effectue un filtrage pour ignorer ClusteredTargets
80 #--------------------------------------------------
81 set targetName [lindex [split $target #] 1]
82 if {[regexp "ClusteredTarget" $targetName] != 1} {
83 set sName [$AdminConfig showAttribute $target name]
84 set nName [$AdminConfig showAttribute $target nodeName]
85
86 #----------------------------------------------
87 # fait correspondre le nom du serveur
88 #----------------------------------------------
89 if {$sName == $serverName} {
90 if {$nName == $nodeName} {
91 set sameNodeSameServer "true"
92 } else {
93 set diffNodeSameServer "true"
94 }
95 } else {
96 #---------------------------------------
97 # fait correspondre le nom du serveur
98 #---------------------------------------
99 if {$nName == $nodeName} {
100 set sameNodeDiffServer "true"
101 } else {
102 set diffNodeDiffServer "true"
103 }
104 }
105
106 if {$sameNodeSameServer == "true"} {
107 if {$sameNodeDiffServer == "true" || $diffNodeDiffServer == "true" ||
$diffNodeSameServer == "true"} {
108 break
109 }
110 }
111 }
112 }
113
114 #---------------------------------------------
115 # le place dans la liste adéquate
116 #---------------------------------------------
117 if {$sameNodeSameServer == "true"} {
118 if {$diffNodeDiffServer == "true" || $diffNodeSameServer == "true" || $sameNodeDiffServer == "true"} {
119 set modServerMoreMatch [linsert $modServerMoreMatch end [$AdminConfig showAttribute $module uri]]
120 } else {
121 set modServerMatch [linsert $modServerMatch end [$AdminConfig showAttribute $module uri]]
122 }
123 } else {
124 set modServerNotMatch [linsert $modServerNotMatch end [$AdminConfig showAttribute $module uri]]
125 }
126 }
127
128
129 #----------------------------------------------------------------
130 # imprime la sortie avec certaines notations
131 #----------------------------------------------------------------
132 if {$modServerMatch != {} || $modServerMoreMatch != {}} {
133 puts stdout "\tApplication name: $appName"
134 }
135
136 #---------------------------------------------------------
137 # regroupe dans le module approprié et imprime
138 #---------------------------------------------------------
139 if {$modServerMatch != {}} {
140 filterAndPrint $modServerMatch "+"
141 }
142 if {$modServerMoreMatch != {}} {
143 filterAndPrint $modServerMoreMatch "*"
144 }
145 if {($modServerMatch != {} || $modServerMoreMatch != {}) "" $modServerNotMatch != {}} {
146 filterAndPrint $modServerNotMatch ""
147 }
148}
149
150
151 proc filterAndPrint {lists flag} {
152 global webList
153 global ejbList
154 set webExists "false"
155 set ejbExists "false"
156
157 #--------------------------------------------------------------------------------------
158 # Si la liste existe déjà, marquez-la pour n'imprimer qu'une seule fois le titre
159 # et réinitialisez-la
160 #---------------------------------------------------------------------------------------
161 if {$webList != {}} {
162 set webExists "true"
163 set webList {}
164 }
165 if {$ejbList != {}} {
166 set ejbExists "true"
167 set ejbList {}
168 }
169
170 #------------------------------------------------------------------
171 # effectue un filtrage pour des modules web et ejb
172 #------------------------------------------------------------------
173 foreach list $lists {
174 set temp [lindex [split $list .] 1]
175 if {$temp == "war"} {
176 set webList [linsert $webList end $list]
177 } elseif {$temp == "jar"} {
178 set ejbList [linsert $ejbList end $list]
179 }
180 }
181
182 #---------------------------------------
183 # trie la liste avant impression
184 #---------------------------------------
185 set webList [lsort -dictionary $webList]
186 set ejbList [lsort -dictionary $ejbList]
187
188 #----------------------------------------------------------------
189 # imprime tous les modules web installés dans server1
190 #----------------------------------------------------------------
191 if {$webList != {}} {
192 if {$webExists == "false"} {
193 puts stdout "\t\tWeb Modules:"
194 }
195 foreach web $webList {
196 puts stdout "\t\t\t$web $flag"
197 }
198 }
199
200 #--------------------------------------------------------------
201 # imprime tous les modules ejb installés dans server1
202 #--------------------------------------------------------------
203 if {$ejbList != {}} {
204 if {$ejbExists == "false"} {
205 puts stdout "\t\tEJB Modules:"
206 }
207 foreach ejb $ejbList {
208 puts stdout "\t\t\t$ejb $flag"
209 }
210 }
211}
Exemple de sortie pour server1 sur le noeud node1 :
Nom de l'application : TEST1
Modules EJB :
deplmtest.jar +
Modules Web :
mtcomps.war *
Nom de l'application : TEST2
Modules Web :
mtcomps.war +
Modules EJB :
deplmtest.jar +
Nom de l'application : TEST3
Modules Web :
mtcomps.war *
Modules EJB :
deplmtest.jar *
Nom de l'application : TEST4
Modules EJB :
deplmtest.jar *
Modules Web :
mtcomps.war