Anwendungsverwaltungsoperationen durch Programmierung erweitern

Mit Hilfe des einheitlichen Implementierungs-Framework können Sie den Anwendungsverwaltungsoperationen zusätzliche Logik hinzufügen. Diese zusätzliche Logik kann Aufgaben wie z. B. Codegenerierung, Konfigurationsoperationen, zusätzliche Validierung usw. ausführen. Dieser Artikel zeigt, wie mittels Programmierung über das einheitliche Implementierungs-Framework Anwendungsverwaltungsoperationen erweitert werden können.

Vorbereitende Schritte

Diese Task setzt Grundkenntnisse in der Programmierung mit Java™-APIs (Application Programming Interfaces, Anwendungsprogrammierschnittstellen) voraus. Lesen Sie die Informationen zu den Java-APIs in der Dokumentation zu den Anwendungsprogrammierschnittstellen.

Bevor Sie Anwendungsverwaltungsoperationen erweitern können, müssen Sie zunächst WebSphere Application Server installieren.

Informationen zu diesem Vorgang

Dieses Beispiel veranschaulicht das Erweitern der Anwendungsverwaltungs mittels Programmierung. Die Tasks, die von den Erweiterungen bereitgestellt werden, können über alle Verwaltungsclients abgerufen werden, z. B. über das Tool "wsadmin", über die Administrationskonsole oder über die von der MBean "AppManagement" bereitgestellten programmgesteuerten APIs.

Vorgehensweise

  1. Definieren Sie Ihre Erweiterung als Eclipse-Plug-in, und fügen Sie eine Datei des Typs plugin.xml hinzu, um Ihren Erweiterungsprovider mit dem Implementierungs-Framework zu registrieren.
    1. Geben Sie in der Datei plugin.xml eine Implementierungsklasse des Erweiterungsproviders für den Erweiterungspunkt (extension point) common-deployment-framework-extensionprovider an.
    2. Speichern Sie die Plug-in-JAR-Datei (Java Archive) im Verzeichnis plugins Ihrer Installation von WebSphere Application Server.
    <?xml version="1.0" encoding="UTF-8"?> 
    <plugin
       id=“com.ibm.meinProdukt.MeinErweiterungsprovider”
       name=“Meine Erweiterung"
       version="1.0.0">
    
       <extension point=“common-deployment-framework-extensionprovider”>
          <action class=“com.acme.MyExtendProviderImpl“/>
       </extension>
    </plugin>
  2. Geben Sie einen Erweiterungsprovider an.

    Eine Erweiterungsproviderklasse stellt die Schritte für eine gegebene Operation in einer EAR-Anwendungsdatei bereit (Enterprise Archive). Bevor eine Operation ausgeführt wird, fragt das Implementierungs-Framework alle registrierten Erweiterungsprovider auf zusätzliche Schritte ab. An jeden Provider wird eine einzelne Liste von Schritten übermittelt. Jeder Provider kann der Liste Schritte hinzufügen. Der vom Implementierungs-Framework bereitgestellte Standardprovider wird als Erster aufgerufen, um die Liste mit Standardschritten zu füllen. Anschließend werden die übrigen Erweiterungsprovider aufgerufen.

    Verschiedene Operationen, die Sie über das einheitliche Implementierungs-Framework erweitern können, sind als Konstanten in der Klasse DeploymentConstants definiert. Diese Operationen sind in der folgenden Tabelle beschrieben. Einige Operationen wurden zwecks besserer Lesbarkeit auf mehrere Zeilen verteilt.
    Tabelle 1. Erweiterbare DeploymentConstants-Operationen. Wählen Sie eine Operation zur Erweiterung aus.
    Operation Beschreibung
    DeploymentConstants.CDF_OP_INSTALLJ2EE Installiert eine Java EE-EAR-Datei (Java Platform, Enterprise Edition).
    DeploymentConstants.CDF_OP_EDITJ2EE Editiert eine Implementierungsanwendungskonfiguration.
    DeploymentConstants.CDF_OP_UPDATEJ2EE Wendet eine spezifische Aktualisierung auf eine Anwendung an, z. B. Hinzufügeoperation, Löschoperation, Aktualisierung einer Datei oder eines Moduls oder eine Teilaktualisierung der Anwendung.
    DeploymentConstants.CDF_OP_UNINSTALLJ2EE Deinstalliert eine Java EE-Anwendung.
    DeploymentConstants.
    CDF_OP_CREATE_EAR_WRAPPERJ2EE
    Schließt den in die Anwendungsinstallation eingegebenen Inhalt in eine EAR-Datei ein.

    Die MBean "AppManagement", die für die Implementierung und Verwaltung von Java EE-Anwendungen in WebSphere Application Server zuständig ist, führt alle Operationen außer der Operation CDF_OP_CREATE_EAR_WRAPPERJ2EE aus. Implementieren Sie die Erweiterungen, durch die diese Operationen erweitert werden, im Verzeichnis plugins im Deployment Manager.

    Wenn der für die Operation CDF_OP_INSTALLJ2EE angegebene Inhalt nicht als EAR-Datei gepackt ist, wird die Operation CDF_OP_CREATE_EAR_WRAPPERJ2EE entweder über das Dienstprogramm wsadmin oder über die Administrationskonsole ausgeführt. Implementieren Sie eine Erweiterung, die die Operation CDF_OP_CREATE_EAR_WRAPPERJ2EE erweitert, im Verzeichnis plugins der wsadmin-Installation.

    Im folgenden Beispiel wird ein Erweiterungsprovider bereitgestellt, der folgende Tasks ausführt:
    1. Er fügt zwei zusätzliche Schritte zur Anwendungsinstallationsoperation hinzu.
    2. Er fügt einen Schritt hinzu, durch den der eingegebene Inhalt in eine EAR-Datei eingeschlossen wird.
    package com.acme;
    
    import com.ibm.websphere.management.deployment.registry.ExtensionProvider;
    import com.ibm.websphere.management.deployment.core.DeploymentConstants;
    
    public class MyExtensionProviderImpl extends ExtensionProvider {
    				public void addSteps (String type, String op, String phase, 
    						List steps)
    		{
    						if (op.equals (DeploymentConstants.CDF_OP_INSTALLJ2EE))
    			{
    								// Einen Schritt zur Codegenerierung hinzufügen
    								steps.add (0, new com.acme.CodeGenStep());
    								// Einen Konfigurationsschritt hinzufügen
    								steps.add (new com.acme.ConfigStep());
    			}
    						else if (op.equals (DeploymentConstants.CDF_OP_CREATE_EAR_WRAPPERJ2EE))
    			{
    								// Einen Schritt zum Einschließen des Inhalts in eine EAR hinzufügen
    								steps.add (new com.acme.EarWrapperStep());
    			}
    		}
    }
  3. Implementieren Sie den Implementierungsschritt.

    Ein Erweiterungsprovider fügt einen Implementierungsschritt hinzu. Der Schritt enthält die Logik, die in einer Anwendungsverwaltungsoperation eine zusätzliche Verarbeitung ausführt. Die Logik stellt den Zugriff dieses Schrittes auf den Implementierungskontext und das implementierbare Objekt bereit. Der Implementierungskontext enthält Informationen wie z. B. den Namen der Operation, die Konfigurations-Sitzungs-ID, ein temporäres Verzeichnis zum Erstellen temporärer Dateien, Operationsparameter usw. Das implementierbare Objekt schließt den in die Operation eingegebenen Implementierungsinhalt ein. Beispielsweise schließt das implementierbare Objekt die Java EE-EAR-Datei für die Installationsoperation ein oder eine Datei, ein Modul oder eine Teilanwendung für die Aktualisierungsoperation.

    • Das folgende Beispiel zeigt, wie eine Erweiterung während der Installation eine in die Installationsoperation eingegebene EAR-Datei vollständig ändert. Das Beispiel stellt während der Installationsoperation einen Implementierungsschritt bereit, der die folgenden Tasks ausführt:
      1. Er führt eine Codegenerierung zum Generieren einer neuen EAR-Datei aus.
      2. Er ruft die Methode setContentPath in der Klasse DeployableObject auf, um den Pfad der neuen EAR-Datei festzulegen. Die Standardinstallationslogik, z. B. die Schritte, die von der Standardinstallationslogik hinzugefügt werden, verwendet diese neue EAR-Datei für die Installation im Konfigurationsrepository.
      package com.acme;
      
      import com.ibm.websphere.management.deployment.core.DeploymentStep;
      import com.ibm.websphere.management.deployment.core.DeployableObject;
      
      public class CodeGenStep extends DeploymentStep
      {
      				public void execute (DeployableObject dObject)
      		{
      						EARFile earFile = (EARFile)dObject.getHandle();
      						String newEARPath = null;
      						// Schrittspezifische Logik verwenden, um nach der Codegenerierung eine andere EAR-Datei zu erstellen.
      			…
      						newEARPath = _context.getTempDir() + "new.ear";
      
      						dObject.setContentPath (newEARPath);
      		}		
      }
    • Das folgende Beispiel enthält einen Implementierungsschritt, der folgende Tasks ausführt:
      1. Er liest den Inhalt der eingegebenen EAR-Datei.
      2. Er ändert die Konfigurationssitzung, die über die Kontextinstanz _context aufgerufen wird.
      package com.acme;
      
      public class ConfigStep extends DeploymentStep
      {
      				public void execute (DeployableObject dObject)
      		{
      						EARFile earFile = (EARFile) dObject.getHandle();
      
      						// Die Konfiguration mit folgendem Beispielcode ausführen.
      						String sessionID = _context.getSessionID();
      						com.ibm.websphere.management.Session session = new
      								com.ibm.websphere.management.Session (sessionID, true);
      						// Die Konfigurationsschritte mithilfe des Konfigurationsservice ausführen.
      			…
      
      						// Die Anwendungskonfiguration lesen.
      						Application appDD = earFile.getDeploymentDescriptor();
      			…
      
      						String newEARPath = null;
      		}		
      }
    • Das folgende Beispiel enthält einen Implementierungsschritt, in dem ein beliebiger Inhalt in eine EAR-Datei eingeschlossen wird. Die Logik der Anwendungsverwaltung akzeptiert nur die EAR-Datei für die Implementierung. Wenn Sie etwas anderes als eine EAR-Datei in den Implementierungsprozess einfügen möchten, ist eine Erweiterung erforderlich.

      package com.acme;
      
      import com.ibm.websphere.management.deployment.core.DeploymentStep;
      import com.ibm.websphere.management.deployment.core.DeployableObject;
      
      public class EarWrapperStep extends DeploymentStep
      {
      				public void execute (DeployableObject dObject)
      		{
      						Archive archive = (Archive) dObject.getHandle();
      						String newEARPath = null;
      						// Geben Sie die Logik an, um die JAR in die EAR einzuschließen
      			…
      						newEARPath = //;
      						// Geben Sie den neuen EAR-Pfad im DeploymentContext an
      						this.getContext().getContextData()
           .put(DeploymentContext.RETURN_Object_key, newEARPath);
      		}		
      }

Ergebnisse

Mittels Programmierung haben Sie über das einheitliche Implementierungs-Framework die Anwendungsverwaltungsoperationen erweitert.

Nächste Schritte

Sie können auch andere Anwendungsverwaltungsoperationen erweitern oder andere Verwaltungsoperationen ausführen.


Symbol, das den Typ des Artikels anzeigt. Taskartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tjmx_cdf
Dateiname:tjmx_cdf.html