In meinem letzten Blog über die Einsatzmöglichkeiten der wichtigsten Anwendungsserver habe ich scherzhaft gefragt, ob jemand den Unterschied zwischen Einschlusspfaden, Konfigurations-IDs und Objektnamen in der Skripting-Schnittstelle wsadmin von WebSphere kennt. Ich habe keine Antwort erhalten (und auch keine erwartet ;-) ). Aber anstatt Sie im Ungewissen zu lassen, werden wir Ihnen in diesem Blog den Unterschied zwischen diesen dreien erklären und wie Sie zwischen ihnen übersetzen können.
Konfiguration ID
Konfigurations-IDs sind die häufigsten IDs, denen Sie bei der Arbeit mit wsadmin begegnen werden. Sie spezifizieren eindeutig ein Element in der Konfiguration von WebSphere Application Server und werden benötigt, um die Konfiguration mit einem der Befehle im Menü AdminConfig Objekt zu ändern.
Die Konfigurations-IDs haben die folgende Syntax:
Name(Verzeichnis|Dateiname#XML-fragment-id)
Als Beispiel verweist die folgende Konfigurations-ID auf die Konfiguration für den Anwendungsserver mit dem Namen server1:
server1(cells/was-70Cell01/nodes/was-70Node01/servers/server1|server.xml#Server_1254421834316)
Konfigurationsobjekte, die keinen Namen haben, haben auch keinen Namen in ihrer Konfigurations-ID. Dies ist zum Beispiel die Konfigurations-ID für ein Objekt "JAAS/J2C Authentication Data":
(cells/was-70Cell01|security.xml#JAASAuthData_1258718081490)
Die Konfigurations-ID sagt Ihnen, wo Sie die Konfiguration auf der Festplatte finden können. Nehmen wir die Konfigurations-ID für den Anwendungsserver aus dem obigen Beispiel. Wenn Sie die Datei
Eindämmungspfad
Bevor wir uns mit dem Objektnamen befassen, lassen Sie uns zunächst den Einschlusspfad besprechen. Da eine Konfigurations-ID eine scheinbar zufällige XML-Fragment-ID enthält, können Sie die Konfigurations-ID eines Objekts nicht kennen, wenn Sie nur seinen Namen wissen. Um dieses Problem zu lösen. IBM hat das Konzept des Einschließungspfads eingeführt. Ein Containment-Pfad gibt den hierarchischen Pfad an, wie Sie das gesuchte Objekt erreichen. Die allgemeine Syntax, die einige Leute an XPath erinnern mag, lautet wie folgt:
/Typ:Name/Typ:Name/Typ:Name/.../
Jedes Pfadelement muss einen Typ haben (einen der von AdminConfig.types zurückgegebenen Typen) und kann optional einen Namen haben. Wenn kein Name angegeben wird, passen alle Objekte des angegebenen Typs.
So können Sie beispielsweise die Konfigurations-ID des Servers namens server1 wie folgt abrufen (unter Verwendung der Jython-Syntax):
print AdminConfig.getid('/Server:server1/')
Wenn es mehrere Server mit dem Namen server1 gibt, die auf verschiedenen Knoten laufen, können Sie den richtigen auf diese Weise ermitteln:
print AdminConfig.getid('/Knoten:was-70Node01/Server:server1/')
Wenn Sie herausfinden möchten, wo sich ein bestimmter Typ von Konfigurationsobjekten in der WebSphere-Konfigurationsstruktur befindet, können Sie den Befehl AdminConfig.parents mit dem Typ als erstem Parameter aufrufen.
Sobald sie in eine Konfigurations-ID übersetzt sind, werden keine Einschließungspfade mehr benötigt.
Objektname
OK, damit bleibt nur noch der Objektname zu besprechen. Der Objektname bezieht sich auf eine laufende JMX MBean, die mit einem der Befehle in der DateiWebSphere:Schlüssel=Wert,Schlüssel=Wert,Schlüssel=Wert,...Die MBean-Hierarchie ist eine andere Hierarchie als die Hierarchie der Konfigurationsobjekte:
- Für einige Konfigurationsobjekte gibt es eine entsprechende MBean. Zum Beispiel hat die MBean, die dem oben erwähnten Server entspricht, den Namen
WebSphere:name=server1,process=server1,platform=proxy,node=was-70Node01,j2eeType=J2EEServer,version=7.0.0.5,type=Server,mbeanIdentifier=cells/was-70Cell01/nodes/was-70Node01/servers/server1/server.xml#Server_1254421834316,cell=was-70Cell01,spec=1.0,processType=ManagedProcess .
Sie können diesen Objektnamen erhalten, indem Sie den BefehlAdminConfig.getObjectName mit der Konfigurations-ID als erstem Parameter aufrufen. Wenn es keine entsprechende MBean gibt oder das Objekt nicht läuft, wird nichts zurückgegeben. - Für einige Konfigurationsobjekte, wie z.B. die JAAS/J2C-Authentifizierungsdaten, gibt es keine entsprechende MBean, da es keinen Laufzeitstatus zu kontrollieren gibt.
- Und schließlich gibt es auch MBeans, die nicht mit Konfigurationsobjekten korrespondieren. Sie können
AdminControl.queryNames oderAdminControl.queryNames_jmx aufrufen und eine JMX-Abfrage übergeben, um die entsprechenden Objektnamen zu erhalten. Das funktioniert natürlich auch für MBeans, die eine entsprechende Konfigurations-ID haben.
Übersicht
Die Kenntnis des Unterschieds zwischen diesen drei Arten von IDs ist wichtig, wenn Sie wsadmin effektiv nutzen wollen. Um herauszufinden, welche ID Sie in welchem Fall verwenden müssen und wie Sie die IDs erhalten, sehen Sie bitte in der folgenden Tabelle nach.| Konfiguration ID | Containment-Pfad | Objektname | |
|---|---|---|---|
| Repräsentiert | Ein statisches Konfigurationsobjekt | Einen Kurznamen für ein Konfigurationsobjekt | Eine laufende MBean |
| Verwendet von | AdminConfig | AdminConfig | AdminControl |
| Abfrage | AdminConfig.list | K.A. | AdminControl.queryNames und AdminControl.queryNames_jmx | Übersetzen von Konfigurations-ID | N/A | N/A | AdminConfig.getObjectName |
| Übersetzen von Containment-Pfad | AdminConfig.getid | N/A | NICHT ZUTREFFEND |
| Übersetzen von Objektname | AdminControl.getConfigId | N/A | N/A |
Verfasst von
Vincent Partington
Contact