Beispiel: Die Module in einem Anwendungsserver auflisten
In diesem Beispiel werden alle Module in allen Unternehmensanwendungen, die im Server server1 auf dem Knoten node1 installiert sind, aufgelistet.
Der Stern (*) bedeutet, dass das Modul in server1 und node1 und einem anderen Server oder Knoten installiert ist. Das Pluszeichen (+) bedeutet, dass das Modul nur in server1 und auf node1 installiert ist.
1 #-----------------------------------------------------------------------------------------------
2 # Variablen für Servernamen und Knotennamen konfigurieren
3 #----------------------------------------------------------------------------------
4 set serverName server1
5 set nodeName node1
6 #----------------------------------------------------------------------------------
7 # 2 globale Listen für die Module konfigurieren
8 #----------------------------------------------------------------------------------
9 set ejbList {}
10 set webList {}
11
12 #------------------------------------------------------------------------------------------------
13 # Alle Implementierungsobjekte abrufen und der Variable deployments zuordnen
14 #------------------------------------------------------------------------------------------------
15 set deployments [$AdminConfig getid /Deployment:/]
16
17 #------------------------------------------------------------------------------------------------
18 # Die Zeilen 22 bis 148 iterieren durch alle Implementierungsobjekte, um die Module abzurufen,
19 # und filtern die Objekte dann, um eine Anwendung aufzulisten, die mindestens ein Modul enthält, das
20 # in server1 auf dem Knoten myNode installiert ist.
21 #------------------------------------------------------------------------------------------------
22 foreach deployment $deployments {
23
24 # -------------------------------------------------------------------------------------------
25 # Die Listen mit den Modulen für die Anwendungen zurücksetzen
26 #--------------------------------------------------------------------------------------------
27 set webList {}
28 set ejbList {}
29
30 #------------------------------------------
31 # Anwendungsnamen abrufen
32 #------------------------------------------
33 set appName [lindex [split $deployment (] 0]
34
35 #------------------------------------------
36 # Implementierte Objekte abrufen
37 #------------------------------------------
38 set depObject [$AdminConfig showAttribute $deployment deployedObject]
39
40 #--------------------------------------------
41 # Alle Module in der Anwendung abrufen
42 #---------------------------------------------
43 set modules [lindex [$AdminConfig showAttribute $depObject modules] 0]
44
45 #--------------------------------------------------------------------------------------------
46 # Listen initialisieren, um alle Module in der richtigen Liste zu speichern
47 #--------------------------------------------------------------------------------------------
48 set modServerMatch {}
49 set modServerMoreMatch {}
50 set modServerNotMatch {}
51
52 #----------------------------------------------------------------------------------------
53 # Die Zeilen 55 bis 112 iterieren durch alle Module, um die Zielzuordnungen abzurufen
54 #----------------------------------------------------------------------------------------
55 foreach module $modules {
56 #------------------------------------------------------------------------------------
57 # Flag setzen, um die Objekte zu filtern und Module für server1 auf node1 abzurufen
58 #------------------------------------------------------------------------------------
59 set sameNodeSameServer "false"
60 set diffNodeSameServer "false"
61 set sameNodeDiffServer "false"
62 set diffNodeDiffServer "false"
63
64 #--------------------------------------------
65 # Zielzuordnungen abrufen
66 #--------------------------------------------
67 set targetMaps [lindex [$AdminConfig showAttribute $module targetMappings] 0]
68
69 #------------------------------------------------------------------------------------
70 # Die Zeilen 72 bis 111 iterieren durch alle Zielzuordnungen, um das Ziel abzurufen
71 #------------------------------------------------------------------------------------
72 foreach targetMap $targetMaps {
73 #------------------------------
74 # Ziel abrufen
75 #------------------------------
76 set target [$AdminConfig showAttribute $targetMap target]
77
78 #--------------------------------------------------
79 # Filtern, um Clusterziele zu überspringen
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 # Abgleich des Servernamens durchführen
88 #----------------------------------------------
89 if {$sName == $serverName} {
90 if {$nName == $nodeName} {
91 set sameNodeSameServer "true"
92 } else {
93 set diffNodeSameServer "true"
94 }
95 } else {
96 #---------------------------------------
97 # Abgleich des Knotennamens durchführen
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 # In der richtigen Liste speichern
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 # Ausgabe mit Markierung versehen
131 #----------------------------------------------------------------
132 if {$modServerMatch != {} || $modServerMoreMatch != {}} {
133 puts stdout "\tApplication name: $appName"
134 }
135
136 #---------------------------------------------------------
137 # Modulgruppen erstellen und ausgeben
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 # Wenn die Liste vorhanden ist, so markieren, damit Überschrift nur einmal ausgegeben wird,
159 # und die Liste zurücksetzen
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 # Webmodule und EJB-Module filtern
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 # Liste vor der Ausgabe sortieren
184 #---------------------------------------
185 set webList [lsort -dictionary $webList]
186 set ejbList [lsort -dictionary $ejbList]
187
188 #----------------------------------------------------------------
189 # Alle in server1 installierten Webmodule ausgeben
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 # Alle in server1 installierten EJB-Module ausgeben
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}
Beispielausgabe für server1 auf Knoten node1:
Application name: TEST1
EJB Modules:
deplmtest.jar +
Web Modules:
mtcomps.war *
Application name: TEST2
Web Modules:
mtcomps.war +
EJB Modules:
deplmtest.jar +
Application name: TEST3
Web Modules:
mtcomps.war *
EJB Modules:
deplmtest.jar *
Application name: TEST4
EJB Modules:
deplmtest.jar *
Web Modules:
mtcomps.war