Instalación de una aplicación a través de programación
Puede instalar una aplicación a través de la consola administrativa, la herramienta wsadmin o mediante programación. Utilice este ejemplo para instalar una aplicación a través de programación.
Antes de empezar
Para poder instalar una aplicación en WebSphere Application Server, debe instalar la aplicación.
Acerca de esta tarea
La instancia de AppDeploymentController contiene metadatos definidos en los descriptores de despliegue basados en XMLl, así como las anotaciones definidas en las clases Java dentro del archivo EAR (Enterprise Archive) de entrada.
Lleve a cabo las tareas siguientes para instalar una aplicación a través de programación.
Procedimiento
Resultados
Después de ejecutar satisfactoriamente el código, la aplicación se instala.
Ejemplo
En el ejemplo siguiente se muestra cómo instalar una aplicación basándose en los pasos anteriores. Algunas sentencias están partidas en varias líneas para fines de impresión.
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";
// Pase de preparación: Inicio
// Mediante la fase de preparación se llena el archivo archivador de empresa (EAR) con
// información de enlace específica del producto. Por ejemplo, puede especificar nombres JNDI
// (Java Naming and Directory Interface) para enterprise beans o hosts virtuales para
// módulos web, etc.
// En primer lugar, cree el controlador y llene el archivo EAR con las opciones adecuadas.
Hashtable prefs = new Hashtable();
prefs.put(AppConstants.APPDEPL_LOCALE, Locale.getDefault());
// Puede ejecutar opcionalmente el generador de enlaces predeterminados utilizando las opciones siguientes.
// Consulte la documentación de Java sobre la clase AppDeploymentController para ver todas las
// opciones que se pueden establecer.
Properties defaultBnd = new Properties();
prefs.put (AppConstants.APPDEPL_DFLTBNDG, defaultBnd);
defaultBnd.put (AppConstants.APPDEPL_DFLTBNDG_VHOST, "default_host");
// Cree el controlador.
AppDeploymentController controller = AppDeploymentController
.readArchive(earFile, prefs);
AppDeploymentTask task = controller.getFirstTask();
while (task != null)
{
// Llene los datos de tarea.
String[][] data = task.getTaskData();
// Manipule los datos de tarea que es una tabla de stringtask.
task.setTaskData (data);
task = controller.getNextTask();
}
controller.saveAndClose();
Hashtable options = controller.getAppDeploymentSavedResults();
// La tabla de opciones anterior contiene la relación de módulo a servidor si se ha establecido
// utilizando tareas.
//Fase de preparación: Fin
// Obtener una conexión con el producto.
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);
// Crear el proxy de gestión de aplicaciones, AppManagement.
AppManagement proxy = AppManagementProxy. getJMXProxyForClient (_soapClient);
// Si se ha ejecutado código para la fase de preparación, ya tiene la tabla de opciones.
// Si no, cree una tabla nueva y añada la relación de módulo a servidor eliminando el comentario
// de la sentencia siguiente.
//Hashtable options = new Hashtable();
options.put (AppConstants.APPDEPL_LOCALE, Locale.getDefault());
// Elimine el comentario de las sentencias siguientes para añadir el módulo a la tabla de relaciones de servidor si
// la fase de preparación no los recopila.
//Hashtable module2server = new Hashtable();
//module2server.put ("*", target);
//options.put (AppConstants.APPDEPL_MODULE_TO_SERVER, module2server);
//Cree el filtro de notificación para recibir sucesos de instalación.
NotificationFilterSupport myFilter = new NotificationFilterSupport();
myFilter.enableType (AppConstants.NotificationType);
//Añadir la escucha.
NotificationListener listener = new AListener(_soapClient,
myFilter, "Install: " + appName, AppNotification.INSTALL);
// Instalar la aplicación.
proxy.installApplication (earFile, appName, options, null);
System.out.println ("After install App is called..");
// Espere un poco. La interfaz de programación de aplicaciones (API) es
// asíncrona y por lo tanto vuelve de inmediato.
// Si el programa no espera en este punto, finaliza.
Thread.sleep(300000); // Espere para que el programa no finalice.
}
catch (Exception e) {
e.printStackTrace();
}
}
}
// Especificar la escucha de notificaciones de JMX (Java Management Extensions) para los sucesos de JMX.
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);
//Cuando la instalación finalice, elimine la escucha y salga de la aplicación.
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);
}
}
}
Qué hacer a continuación
Después de instalar la aplicación, debe iniciar explícitamente la aplicación o debe detener y reiniciar el servidor.