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
- 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.
- Geben Sie in der Datei
plugin.xml eine Implementierungsklasse des
Erweiterungsproviders für den Erweiterungspunkt (extension point)
common-deployment-framework-extensionprovider an.
- 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>
- 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:
- Er fügt zwei zusätzliche Schritte zur Anwendungsinstallationsoperation hinzu.
- 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());
}
}
}
- 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:
- Er führt eine Codegenerierung zum Generieren einer neuen EAR-Datei aus.
- 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:
- Er liest den Inhalt der eingegebenen EAR-Datei.
- 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.