JBoss + Spring + MBeans 2/4

JBossImage

Bueno, ahora veremos cómo obtener info de un MBean existente en el servidor mediante código. La conexión del servidor es lo que se me complicó mucho, todavía no me explico demasiado cómo funciona. Éste es el código:

org.acriter.testJBoss.JMXBrowser:


package org.acriter.testJBoss;import javax.management.MBeanInfo;
import javax.management.MBeanOperationInfo;
import javax.management.MBeanParameterInfo;
import javax.management.ObjectName;
import javax.naming.InitialContext;import org.jboss.jmx.adaptor.rmi.RMIAdaptor;

/**
* Esta clase puede conectarse con JBOSS!!
* Y llamar a sus MBeans…
* Queda para la historia.
* @author hmassaroli
*
*/
public class JMXBrowser
{
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws Exception
{

//ponemos las propiedades (?)
System.setProperty(“java.naming.factory.initial”, “org.jnp.interfaces.NamingContextFactory”);
System.setProperty(“java.naming.provider.url”, “localhost:1099”);

InitialContext ic = new InitialContext();
RMIAdaptor server = (RMIAdaptor) ic.lookup(“jmx/invoker/RMIAdaptor”);

// Get the MBeanInfo for the JNDIView MBean
ObjectName name = new ObjectName(“jboss:service=JNDIView”);
MBeanInfo info = server.getMBeanInfo(name);
System.out.println(“JNDIView Class: ” + info.getClassName());

MBeanOperationInfo[] opInfo = info.getOperations();
System.out.println(“JNDIView Operations: “);
for(int o = 0; o < opInfo.length; o ++) {
MBeanOperationInfo op = opInfo[o];

String returnType = op.getReturnType();
String opName = op.getName();
System.out.print(” + ” + returnType + ” ” + opName + “(“);

MBeanParameterInfo[] params = op.getSignature();
for(int p = 0; p < params.length; p++) {
MBeanParameterInfo paramInfo = params[p];

String pname = paramInfo.getName();
String type = paramInfo.getType();

if (pname.equals(type)) {
System.out.print(type);
} else {
System.out.print(type + ” ” + name);
}

if (p < params.length-1) {
System.out.print(‘,’);
}
}
System.out.println(“)”);
}

// Invoke the list(boolean) op
String[] sig = {“boolean”};
Object[] opArgs = {Boolean.TRUE};
Object result = server.invoke(name, “list”, opArgs, sig);

System.out.println(“JNDIView.list(true) output:n”+result);
}
}

 

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s