Anwendung durch Programmierung installieren
Sie können eine Anwendung mit der Administrationskonsole, dem Tool "wsadmin" oder durch Programmierung installieren. Dieses Beispiel veranschaulicht die Installation einer Anwendung durch Programmierung.
Vorbereitende Schritte
Bevor Sie eine Anwendung in WebSphere Application Server installieren können, müssen Sie die Anwendung installieren.
Informationen zu diesem Vorgang
Die AppDeploymentController-Instanz enthält Metadaten, die in XML-basierten Implementierungsdeskriptoren definiert sind, sowie Annotationen, die in Java-Klassen in der EAR-Dateingabedatei definiert sind.
Führen Sie die folgenden Tasks aus, um eine Anwendung durch Programmierung zu installieren.
Vorgehensweise
Ergebnisse
Wenn der Code fehlerfrei ausgeführt wird, wurde die Anwendung installiert.
Beispiel
Das folgende Beispiel zeigt, wie Sie basierend auf den zuvor beschriebenen Schritten eine Anwendung installieren. Einige Anweisungen sind zur besseren Lesbarkeit auf mehrere Zeilen verteilt.
import java.lang.*;
import java.io.*;
import java.util.*;
import java.lang.reflect.*;
import com.ibm.websphere.management.application.*;
import com.ibm.websphere.management.application.client.*;
import com.ibm.websphere.management.*;
import javax.management.*;
public class Install {
public static void main(String[] args) {
try {
String earFile = "C:/test/test.ear";
String appName = "MyApp";
// Vorbereitungsphase: Anfang
// In der Vorbereitungsphase der EAR-Datei die produktspezifischen
// Bindungsinformationen hinzufügen. Sie können beispielsweise
// JNDI-Namen für Enterprise-Beans oder virtuelle Hosts für Webmodule usw. angeben.
// Zuerst den Controller erstellen und dann der EAR-Datei die entsprechenden
// Optionen hinzufügen.
Hashtable prefs = new Hashtable();
prefs.put(AppConstants.APPDEPL_LOCALE, Locale.getDefault());
// Optional kann der Generator für Standardbindungen mit den folgenden
// Optionen ausgeführt werden.
// Die verfügbaren Optionen sind in der Java-Dokumentation zur Klasse AppDeploymentController
// beschrieben.
Properties defaultBnd = new Properties();
prefs.put (AppConstants.APPDEPL_DFLTBNDG, defaultBnd);
defaultBnd.put (AppConstants.APPDEPL_DFLTBNDG_VHOST, "default_host");
// Controller erstellen.
AppDeploymentController controller = AppDeploymentController
.readArchive(earFile, prefs);
AppDeploymentTask task = controller.getFirstTask();
while (task != null)
{
// Taskdaten hinzufügen.
String[][] data = task.getTaskData();
// Taskdaten bearbeiten
task.setTaskData (data);
task = controller.getNextTask();
}
controller.saveAndClose();
Hashtable options = controller.getAppDeploymentSavedResults();
// Die vorherige Optionstabelle enthält die Modul/Server-Beziehung, wenn diese
// mit Tasks definiert wurde.
// Ende der Vorbereitungsphase.
// Verbindung zum Produkt anfordern.
String host = "localhost";
String port = "8880";
String target = "WebSphere:cell=cellName,node=nodeName,server=server1";
Properties config = new Properties();
config.put (AdminClient.CONNECTOR_HOST, host);
config.put (AdminClient.CONNECTOR_PORT, port);
config.put (AdminClient.CONNECTOR_TYPE, AdminClient.CONNECTOR_TYPE_SOAP);
System.out.println ("Config: " + config);
AdminClient _soapClient = AdminClientFactory.createAdminClient(config);
// Proxy für die Anwendungsverwaltung (AppManagement) erstellen.
AppManagement proxy = AppManagementProxy. getJMXProxyForClient (_soapClient);
// Wenn der Code für die Vorbereitungsphase ausgeführt wurde, ist die Optionstabelle bereits vorhanden.
// Andernfalls eine neue Tabelle erstellen und die Modul/Serverbeziehung hinzufügen, indem
// Sie das Kommentarzeichen in der folgenden Zeile entfernen.
//Hashtable options = new Hashtable();
options.put (AppConstants.APPDEPL_LOCALE, Locale.getDefault());
// Kommentarzeichen aus den folgenden Zeilen entfernen, um die Tabelle
// für die Modul/Server-Beziehung hinzuzufügen, sofern diese in der
// Vorbereitungsphase nicht erfasst wurde.
//Hashtable module2server = new Hashtable();
//module2server.put ("*", target);
//options.put (AppConstants.APPDEPL_MODULE_TO_SERVER, module2server);
// Benachrichtigungsfilter für den Empfang von Installationsereignissen erstellen.
NotificationFilterSupport myFilter = new NotificationFilterSupport();
myFilter.enableType (AppConstants.NotificationType);
//Listener hinzufügen
NotificationListener listener = new AListener(_soapClient, myFilter, "Install: " + appName, AppNotification.INSTALL);
// Anwendung installieren.
proxy.installApplication (earFile, appName, options, null);
System.out.println ("After install App is called..");
// Zeitlimit abwarten. Die Installations-API ist
// asynchron und gibt sofort ein Ergebnis zurück.
// Falls das Programm an dieser Stelle nicht wartet, wird das Programm beendet.
Thread.sleep(300000); // Warten, damit das Programm nicht beendet wird
}
catch (Exception e) {
e.printStackTrace();
}
}
}
// JMX-Listener für Benachrichtigungen für JMX-Ereignisse angeben.
class AListener implements NotificationListener
{
AdminClient _soapClient;
NotificationFilterSupport myFilter;
Object handback;
ObjectName on;
String eventTypeToCheck;
public AListener(AdminClient cl, NotificationFilterSupport fl,
Object h, String eType) throws Exception
{
_soapClient = cl;
myFilter = fl;
handback = h;
eventTypeToCheck = eType;
Iterator iter = _soapClient.queryNames (new ObjectName(
"WebSphere:type=AppManagement,*"), null).iterator();
on = (ObjectName)iter.next();
System.out.println ("ObjectName: " + on);
_soapClient.addNotificationListener (on, this, myFilter, handback);
}
public void handleNotification (Notification notf, Object handback)
{
AppNotification ev = (AppNotification) notf.getUserData();
System.out.println ("!! JMX event Recd: (handback obj= " + handback+ "): " + ev);
//Nach Abschluss der Installation Listener entfernen und Programm beenden.
if (ev.taskName.equals (eventTypeToCheck) &&
(ev.taskStatus.equals (AppNotification.STATUS_COMPLETED) ||
ev.taskStatus.equals (AppNotification.STATUS_FAILED)))
{
try
{
_soapClient.removeNotificationListener (on, this);
}
catch (Throwable th)
{
System.out.println ("Error removing listener: " + th);
}
System.exit (0);
}
}
}
Nächste Schritte
Nachdem Sie die Anwendung installiert haben, müssen Sie die Anwendung explizit starten oder den Server stoppen und anschließend erneut starten.