Java 列出使用JMX或JNDI从Jboss进行的所有部署

Java 列出使用JMX或JNDI从Jboss进行的所有部署,java,jboss,jndi,jmx,Java,Jboss,Jndi,Jmx,有没有办法获得JBoss6.0上所有部署的列表 在Wildfly 9.0.1上使用JMX(ServerMBean)或JNDI?在Java中实现。最终代码如下所示: String host = "localhost"; int port = 9990; String urlString = System.getProperty("jmx.service.url","service:jmx:http-remoting-jmx://" + host + ":" + port);

有没有办法获得JBoss6.0上所有部署的列表
在Wildfly 9.0.1上使用JMX(ServerMBean)或JNDI?在Java中实现。最终代码如下所示:

    String host = "localhost";
    int port = 9990;
    String urlString = System.getProperty("jmx.service.url","service:jmx:http-remoting-jmx://" + host + ":" + port);
    JMXServiceURL serviceURL = new JMXServiceURL(urlString);
    JMXConnector jmxConnector = JMXConnectorFactory.connect(serviceURL, null);
    MBeanServerConnection connection = jmxConnector.getMBeanServerConnection();
    ObjectName name = new ObjectName("jboss.modules:type=ModuleLoader,name=*");
    Set<ObjectInstance> objectInstances = connection.queryMBeans(name, null);
    for (ObjectInstance objectInstance : objectInstances) {
        if (objectInstance.getObjectName().getCanonicalName().contains("ServiceModuleLoader")) {
            System.out.println("invoking method on " + objectInstance.getObjectName());
            Object dumpAllModuleInformation = connection.invoke(objectInstance.getObjectName(), "dumpAllModuleInformation", new Object[]{}, new String[]{});
            System.out.println(dumpAllModuleInformation);
        }
    }
    jmxConnector.close();

在Wildfly 9.0.1.Final上,代码如下所示:

    String host = "localhost";
    int port = 9990;
    String urlString = System.getProperty("jmx.service.url","service:jmx:http-remoting-jmx://" + host + ":" + port);
    JMXServiceURL serviceURL = new JMXServiceURL(urlString);
    JMXConnector jmxConnector = JMXConnectorFactory.connect(serviceURL, null);
    MBeanServerConnection connection = jmxConnector.getMBeanServerConnection();
    ObjectName name = new ObjectName("jboss.modules:type=ModuleLoader,name=*");
    Set<ObjectInstance> objectInstances = connection.queryMBeans(name, null);
    for (ObjectInstance objectInstance : objectInstances) {
        if (objectInstance.getObjectName().getCanonicalName().contains("ServiceModuleLoader")) {
            System.out.println("invoking method on " + objectInstance.getObjectName());
            Object dumpAllModuleInformation = connection.invoke(objectInstance.getObjectName(), "dumpAllModuleInformation", new Object[]{}, new String[]{});
            System.out.println(dumpAllModuleInformation);
        }
    }
    jmxConnector.close();

使用
jconsole
如果您发现有一个返回部署的操作->是的,有一种方法可以通过JMX获得它,否则没有。使用
jboss cli
获取此类信息如何?我需要用java编写此代码,但是我无法确定ObjectName或生成的Bean类是什么,这可能是
Set mBeans=ManagementFactory.getPlatformMBeanServer().queryMBeans(新的ObjectName(“org.jboss.admin:type=Application,name=*”),null);对于(ObjectInstance ObjectInstance:mBeans){services.add(JMX.newMXBeanProxy(server,ObjectInstance.getObjectName(),ApplicationMXBean.class));}
我需要的是一个jar列表,war和ear文件已部署。如果您发现有返回部署的操作,请使用
jconsole
->是,有办法通过JMX获取,否则不行。使用
jboss cli
获取此类信息如何?我需要用java编写代码,但是我无法确定ObjectName或生成的Bean类是什么,这可能是
Set mBeans=ManagementFactory.getPlatformMBeanServer().queryMBeans(新的ObjectName(“org.jboss.admin:type=Application,name=*”),null);对于(ObjectInstance ObjectInstance:mBeans){services.add(JMX.newMXBeanProxy(server,ObjectInstance.getObjectName(),ApplicationMXBean.class));}
我需要的是部署的jar、war和ear文件的列表。