![[z/OS]](../images/ngzos.gif)
Konzepte des dynamischen JMS-Proxys
Ein dynamischer JMX-Proxy (Java™ Management Extensions) koordiniert MBean-Anforderungen für Server mit mehreren Prozessen. Dieser Abschnitt beschreibt die Haupteigenschaften eines dynamischen JMX-Proxy.
- Steuerprozess
- Empfängt Anforderungen und verteilt sie an die Servant-Prozesse, damit der Anwendungsserver die Anforderungen bearbeiten kann.
- Servant-Prozess
- Empfängt Arbeit vom Steuerprozess und führt die Arbeit aus.
- Option unicall im Vergleich zur Option multicall
- Verwenden Sie die Option unicall in der Methode proxyInvocationType, wenn eine Anforderung einen
beliebigen Servant-Prozess aufruft.
Verwenden Sie die Option multicall in der Methode proxyInvocationType, wenn eine Anforderung
an mehrere Servant-Prozesse verteilt wird und die Servant-Prozesse unterschiedliche Ergebnisse zurückgeben.
Das folgende Beispiel zeigt einen MBean-Deskriptor, der ursprünglich für ein Einzelprozessmodell entwickelt (vorher) und dann auf ein Mehrprozessmodell umgestellt wurde (nachher).
Vorher
Nachher<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE MBean SYSTEM "MbeanDescriptor.dtd"> <MBean type="SampleStateMBean" version="6.0" description="Status-MBean als Beispiel für die Dokumentation"> <attribute description="Name der MBean" getMethod="getMBeanName" name="mbeanName" type="java.lang.String"/> <attribute description="Status der MBean".name="state" getMethod="getState" setMethod="setState" type="java.lang.String"/> <operation description="Initialisieren der Status-MBean" impact="ACTION" name="initializeState" role="operation" targetObjectType="objectReference" type="void"> <signature> <parameter description="Name der MBean" name="mbeanName" type="java.lang.String"/> <parameter description="Anfangsstatus der MBean" name="mbeanName" type="java.lang.String"/> </signature> </operation> </MBean>
Stellen Sie sicher, dass die User MBean im Modus für dynamischen Proxy ausgeführt wird. Geben Sie dazu im Attribut platform dynamicproxy an. Wenn der MBean-Deskriptor kein Attribut platform enthält, verwendet die in WebSphere Application Server for z/OS implementierte User MBean automatisch den Modus für dynamischen Proxy.<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE MBean SYSTEM "MbeanDescriptor.dtd"> <MBean type="SampleStateMBean" version="6.0" platform="dynamicproxy" description="Status-MBean als Beispiel für die Dokumentation"> <attribute description="Name der MBean" getMethod="getMBeanName" name="mbeanName" type="java.lang.String"/> <attribute description="Status der MBean".name="state" getMethod="getState" setMethod="setState" type="java.lang.String"/> proxyInvokeType="unicall" proxySetterInvokeType="multicall"/> <operation description="Initialisieren der Status-MBean" impact="ACTION" name="initializeState" role="operation" targetObjectType="objectReference" type="void" proxyInvokeType="multicall"> <signature> <parameter description="Name der MBean" name="mbeanName" type="java.lang.String"/> <parameter description="Anfangsstatus der MBean" name="mbeanName" type="java.lang.String"/> </signature> </operation> </MBean>
Aktualisieren Sie das XML-Tag attribute oder operation, wie unter "Nachher" angegeben, um in der Mehrprozessumgebung das Aufrufverhalten unicall oder multicall anzugeben. Falls keine Option proxyInvokeType oder proxySetterInvokeType vorhanden ist, wird standardmäßig einer der folgenden Werte angenommen.proxyInvokeType=unicall (for the getMethod) proxyInvokeType=multicall (for the setMethod)
In dem Beispiel unter "Nachher" werden die Methoden getMBeanName und getState mit dem Aufrufverhalten unicall. Die Methoden setState und initializeState werden mit dem Aufrufverhalten multicall ausgeführt.
- Einzelprozessmodell
- Ein Einzelprozessanwendungsserver hat eine Serverlaufzeit. Die MBean führt in der Regel Aktionen für eine Instanz jeder Hauptlaufzeitkomponente aus: einen EJB-Container (Enterprise JavaBeans), einen Web-Container, einen Java EE-Verbindungsmanager usw. Bei diesem Modell wird davon ausgegangen, dass jeder MBean-Aufruf auf dem Server innerhalb desselben Prozesses und derselben JVM (Java Virtual Machine) ausgeführt wird.
- Mehrprozessmodell
- Beim Mehrprozessmodell ist eine Einzelserverinstanz
ein Zusammenschluss von Java Virtual Machines (JVMs), die in einem
separaten Arbeitsprozess ausgeführt werden. Der Steuerprozess kontrolliert Serverfunktionen wie Kommunikationsendpunkte, Autorisierung, Ressourcenwiederherstellung
und Workload-Management. Alle anderen JVMs sind Worker-JVMs, in denen Anwendungsanforderungen
ausgeführt werden. Diese JVMs
interagieren nur mit dem Steuerprozess und nehmen Anweisungen von diesem entgegen.
Alle eingehenden und abgehenden Anforderungen laufen über den Steuerprozess. Clientanforderungen kommen beim Steuerprozess an. Der Steuerprozess verteilt die Arbeit mit Unterstützung des MVS-Workload-Managers (WLM) auf die Servant-Prozesse.
Die Anzahl der von WLM verwalteten Servant-Prozesse ist vom jeweiligen Bedarf abhängig. Der Bedarf wird anhand installationsspezifischer Durchsatzziele, die in der WLM-Richtlinie definiert sind, ermittelt. Alle Servant-Prozesse sind gleich und stellen die erforderlichen Anwendungsserverkomponenten für das J2EE-Anwendungsprogrammiermodell bereit. Die Servant-Prozesse sind auf zahlreiche Services des Steuerprozesses angewiesen, z. B. für Kommunikation, Sicherheit und Transaktionssteuerung.
Das Mehrprozessmodell stellt gegenüber dem Einzelprozessmodell zusätzliche Forderungen an die JMX-Infrastruktur (Java Management Extension). Verwaltungsanforderungen an einen Mehrprozessserver erfordern oft eine Koordinierung der Anwendungsserverprozesse. Die JMX-Infrastruktur stellt für diese Koordinierung zusätzliche Einrichtungen bereit.
- StateObject-Unterstützung für dynamische Proxy-MBean
- Klasse com.ibm.websphere.management.dynamicproxy.StateObject: Der MBean-Provider erweitert die abstrakte Klasse StateObject. Geben Sie die Unterklasse der Klasse StateObject an, damit sie von der JMX-Laufzeit instanziert werden kann, bevor die Initialisierung der dynamischen Proxy-MBean abgeschlossen ist. Die JMX-Laufzeit ordnet die Klasse StateObject der Invocation-Handler-Schnittstelle des dynamischen Proxys zu, um den aktuellen Status des dynamischen Proxys vor und nach Ausführung der MBean-Methode verfolgen zu können. Außerdem ordnet die JMX-Laufzeit das StateObject der Schnittstellenklasse für Ergebnisaggregation und der Schnittstelle für Ereignishandler zu, um die entsprechende Aggregationsanwendung zu unterstützen.
- Unterstützungsschnittstelle für Ergebnisaggregationshandler
- Klasse com.ibm.websphere.management.dynamicproxy.AggregationHandler: Die Unterstützungsschnittstelle für den Ergebnisaggregationshandler definiert die Methode, mit der ein MBean-Provider in einer dynamischen Proxy-MBean in WebSphere Application Server for z/OS die Ergebnisaggregation ausführen kann. Geben Sie das Attribut "aggregationHandlerClass" im XML-Tag "MBeanDescriptor" der MBean an. Implementieren Sie die Schnittstelle für MBean-Methoden, die die proxyInvokeType-Option multicall verwenden und einen Wert zurückgeben. Die Schnittstelle bestimmt die Methode, für die diese Aggregation verarbeitet wird. Anschließend führt es die Aggregation für alle Servant-MBean-Ergebnisse aus, die der Servant-Prozess an den Steuerprozess zurückgibt, und kompiliert sie zu einem Ergebnis, das an den Aufrufer zurückgegeben wird.
- Unterstützungsschnittstelle für Ereignisaggregationshandler
- Klasse com.ibm.websphere.management.dynamicproxy.EventHandler: Die Unterstützungsschnittstelle für den Ereignisaggregationshandler definiert die Methode, mit der ein MBean-Provider in einer dynamischen Proxy-MBean in WebSphere Application Server for z/OS die Ereignisaggregation ausführen kann. Geben Sie das Attribut "eventHandlerClass" im XML-Tag "MBeanDescriptor" der MBean an. Die Schnittstelle bearbeitet alle eingehenden Servant-MBean-Ereignisse und fasst sie zusammen, um doppelte Ereignisse von mehreren Servant-MBeans herauszufiltern. An den Listener der dynamischen Proxy-MBean wird ein Ergebnis zurückgesendet. Die Schnittstelle passt den aktuellen Status der dynamischen Proxy-MBean an die Anforderungen des MBean-Providers an.
- Unterstützungsschnittstelle für Aufrufhandler
- Klasse "com.ibm.websphere.management.dynamicproxy.InvocationHandler": Die Unterstützungsschnittstelle für Aufrufhandler definiert die Methoden preInvoke und postInvoke, die eine dynamische Proxy-MBean in WebSphere Application Server for z/OS implementiert, wenn sie Informationen zur Statusverwaltung benötigt. Wenn der Aufruftyp "multicall" erforderlich ist, verwendet die MBean diese Informationen für die Koordinierung mit den Servant-MBeans. Geben Sie das Attribut "invocationHandlerClass" im XML-Tag "MBeanDescriptor" der MBean an. Verwenden Sie die Schnittstelle für dynamische Proxy-MBeans, für die vor und nach dem Aufrufen einer Methode, die den MBean-Status ändert, eine Statusverwaltung erforderlich ist.
- User MBean
- Die User MBean ist im Servant-Prozess enthalten und bearbeitet Anforderungen
über ihre dynamisch erstellte Proxy-MBean, die im Steuerprozess ausgeführt wird.
Ein MBean-Provider kann Handler mit der Benutzer-MBean so packen, dass
der Provider sine eigene spezielle Verarbeitung für die folgenden Situationen einfügen kann:
- Egebnisaggregation
- Ereignisaggregation
- Aufrufbearbeitung
- Statusverwaltung von Objekten