Adición, actualización o supresión de parte de una aplicación a través de programación
Puede añadir, actualizar o suprimir parte de una aplicación existente a través de la consola de administración, la herramienta wsadmin o mediante programación. En este ejemplo se cambia parte de una aplicación a través de programación. Puede utilizar este ejemplo para añadir, actualizar o suprimir parte de una aplicación existente. Se pueden empaquetar en único archivo comprimido .zip varios cambios en una aplicación.
Antes de empezar
Para obtener más información sobre la estructura del archivo comprimido .zip, consulte el tema sobre la actualización de aplicaciones a través de la consola administrativa. En esta tarea se da por supuesto que se tienen conocimientos básicos de la programación de MBean. Si desea información sobre la programación de MBean, consulte la documentación de la interfaz de programación de aplicaciones (API) Java™ de MBean. En este Information Center, pulse .
Para poder añadir, actualizar o suprimir parte de una aplicación en WebSphere Application Server, debe instalar la aplicación.
Acerca de esta tarea
Lleve a cabo las tareas siguientes para añadir, actualizar o suprimir parte de una aplicación a través de programación.
Procedimiento
- Conéctese a WebSphere Application Server.
- Cree un proxy de gestión de aplicaciones.
- Cree el filtro de notificación.
- Añada la escucha.
- Cambie parcialmente la aplicación existente.
- Espere un poco para que el programa no finalice.
- Preste atención a las notificaciones de JMX (Java Management Extensions) para entender la realización de la operación.
Resultados
Después de ejecutar satisfactoriamente el código, la aplicación se ha modificado.
Ejemplo
En el ejemplo siguiente se muestra cómo añadir, actualizar o suprimir parte de una aplicación basándose en los pasos anteriores. Algunas sentencias están partidas en varias líneas para fines de impresión.
//Entradas:
//partialApp especifica la ubicación de la aplicación parcial.
//appName especifica el nombre de la aplicación.
![[Windows]](../images/windows.gif)
String partialApp = "C:\apps\partial.zip";
![[Linux]](../images/linux.gif)
![[HP-UX]](../images/hpux.gif)
![[Solaris]](../images/solaris.gif)
![[AIX]](../images/aixlogo.gif)
![[z/OS]](../images/ngzos.gif)
![[IBM i]](../images/iseries.gif)
String partialApp = "/apps/partial.zip";
String appName = "MyApp";
//Obtener el cliente administrativo para conectar con el producto.
AdminClient client = ...;
//Crear el proxy de gestión de aplicaciones.
AppManagement proxy = AppManagementProxy.getJMXProxyForClient(client);
// Crear el filtro de notificación. NotificationFilterSupport myFilter = new NotificationFilterSupport();
myFilter.enableType (NotificationConstants.TYPE_APPMANAGEMENT);
//Añadir la escucha. NotificationListener listener = new AListener(_soapClient, myFilter,
"Install: " + appName, AppNotification.UPDATE);
//Cambiar parcialmente la aplicación existente, MyApp.
Hashtable options = new Hashtable();
options.put (AppConstants.APPDEPL_LOCALE, Locale.getDefault());
options.put (AppConstants.APPUPDATE_CONTENTTYPE, AppConstants.APPUPDATE_CONTENT_PARTIALAPP);
proxy.updateApplication ( appName,
null,
partialApp,
null,
options,
null);
// 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
Una vez actualizada la aplicación, elimine la escucha y salga de la aplicación.