En este apartado se describe cómo conectarse a un servidor
Java™
Platform, Enterprise Edition (Java EE) y cómo gestionar varios servidores de
proveedores.
Antes de empezar
El producto implementa totalmente la especificación de gestión de Java
EE, conocida también como JSR-77 (Java Specification Requests 77). No obstante,
es importante que entienda algunas de las diferencias de los detalles entre la
especificación Java EE y la implementación de
WebSphere Application Server cuando se desarrolla
un programa de cliente administrativo para gestionar varios servidores de
proveedores. Si desea más información, consulte la
especificación
de gestión de Java Platform, Enterprise Edition (Java EE) y la
documentación de la interfaz de programación de aplicaciones (API)
Java de MBean.
En este Information Center, pulse .
Acerca de esta tarea
Cuando el programa de cliente administrativo accede a
WebSphere Application Server de
forma exclusiva, puede utilizar las API de Java y los MBeans
definidos por WebSphere Application Server
para gestionarlos. Si el programa necesita acceder a
WebSphere Application Server y a otros
servidores Java EE, utilice la API definida en la especificación de
gestión de Java EE.
Procedimiento
- Conéctese a un servidor Java EE.
Para conectarse a un
servidor, busque el enterprise bean de gestión de la JNDI (Java Naming and Directory
Interface). El enterprise bean de gestión proporciona una interfaz remota con
el servidor de MBeans que se ejecuta en el servidor de aplicaciones. El enterprise bean de gestión funciona prácticamente igual que el
cliente administrativo de
WebSphere Application Server, excepto que
no ofrece funciones específicas de
WebSphere Application Server. En el ejemplo siguiente se muestra cómo buscar el enterprise bean de gestión.
import javax.management.j2ee.ManagementHome;
import javax.management.j2ee.Management;
Properties props = new Properties();
props.setProperty(Context.PROVIDER_URL, "iiop://myhost:2809");
Context ic = new InitialContext(props);
Object obj = ic.lookup("ejb/mgmt/MEJB");
ManagementHome mejbHome = (ManagementHome)
PortableRemoteObject.narrow(obj, ManagementHome.class);
Management mejb = mejbHome.create();
El ejemplo obtiene un contexto inicial para un servidor de aplicaciones
pasando el host y el puerto del conector de RMI (Remote Method Invocation).
Debe codificar
explícitamente el puerto RMI, en este caso 2809. El método lookup busca la vía
de acceso
ejb/mgmt/MEJB, que es la ubicación inicial del
enterprise bean de gestión. En el ejemplo se crea el bean de sesión sin estado mejb, que se utiliza
en el paso siguiente.
- Gestión de servidores de aplicaciones de varios proveedores.
Una vez creado el bean de sesión sin estado mejb, puede utilizarlo para gestionar
los servidores de aplicaciones. Los componentes de los servidores de aplicaciones
aparecen como MBeans, que define la especificación. Estos MBeans tienen todos la
propiedad de claves j2eeType.
Esta propiedad forma parte de un conjunto de
tipos que define la especificación. Todos estos topos tiene un conjunto de
atributos expuestos.
Utilice el siguiente ejemplo como guía en la gestión de
servidores de aplicaciones de varios proveedores. En el ejemplo se utiliza el
MBean de JVM (Java virtual machine) para determinar cuál es tamaño de
almacenamiento dinámico del servidor de aplicaciones.
ObjectName jvmQuery = new ObjectName("*:j2eeType=JVM,*");
Set s = mejb.queryNames(jvmQuery, null);
ObjectName jvmMBean = (ObjectName) s.iterator().next();
boolean hasStats = ((Boolean) mejb.getAttribute(jvmMBean,
"statisticsProvider")).booleanValue();
if (hasStats) {
JVMStats stats = (JVMStats) mejb.getAttribute(jvmMBean,
"stats");
String[] statisticNames = stats.getStatisticNames();
if (Arrays.asList(statisticNames).contains("heapSize")) {
System.out.println("Heap size: " + stats.getHeapSize());
}
}
El método queryNames() consulta primero el MBean JVM. El método
getAttribute obtiene el atributo statisticsProvider y determina si este MBean
proporciona estadísticas. Si lo hace, el ejemplo accede al atributo de
estadísticas y, a continuación, invoca al método getHeapSize() para obtener el
tamaño de almacenamiento dinámico.
Resultados
La ventaja de este ejemplo es que se puede ejecutar en un servidor de
aplicaciones de cualquier proveedor. Demuestra que un MBean puede implementar de manera opcional las
interfaces definidas, en este caso, la interfaz StatisticsProvider. Si un MBean
implementa la interfaz StatisticsProvider, puede ver si un servidor de aplicaciones
da soporte a una estadística determinada, en este caso el tamaño de almacenamiento
dinámico. La especificación define el tamaño de almacenamiento dinámico, aunque este valor es opcional. Si el servidor de aplicaciones da soporte al tamaño de almacenamiento
dinámico, puede visualizar el tamaño de almacenamiento dinámico de la JVM.