如何使用JBoss Wildfly查询活动会话的数量



我们曾经使用以下代码查询活动会话计数,直到JBoss 7:

ObjectName name = new ObjectName(jboss.web:type=Manager,path=/MyWebApp,host=default-host);
MBeanServer jboss = MBeanServerLocator.locateJBoss();
this.sessions = new Long((Integer) jboss.getAttribute(name, "activeSessions"));

这不再适用于JBoss Wildfly。我真的找不到合适的文档来访问当前版本的JBoss AS.的相同信息

我遇到了一些链接,比如http://blog.akquinet.de/2014/09/15/monitoring-the-jboss-eap-wildfly-application-server-with-the-command-line-interface-cli/这意味着信息的位置完全不同——但我不知道如何通过Java代码访问它。

/deployment=example.ear/subdeployment=example-web.war/subsystem=under

JBoss7中对-Dorg.apache.tomcat.util.ENABLE_MODELER=true的旧引用也没有帮助。我通过MBean提出的老问题";jboss.web:type=Manager,path=/,host=localhost"未找到"已不起作用。

假设您正在部署一个WAR文件;则CCD_ 2应该是类似于CCD_。

请注意,在使用WildFly的情况下,管理本机端口是9990,而不是9999

如果您正在使用maven,请添加以下依赖项。

    <dependency>
        <groupId>org.jboss.remotingjmx</groupId>
        <artifactId>remoting-jmx</artifactId>
        <version>2.0.0.Final</version>
    </dependency>

示例:

public static void main(String[] args) throws Exception {
    ObjectName mBeanName = new ObjectName("jboss.as:deployment=wildfly-helloworld-rs.war,subsystem=undertow");
    String host = "localhost";
    int port = 9990;  // management-native port
    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();
    System.out.println("Value via JMX: activeSessions: " + connection.getAttribute(mBeanName, "activeSessions"));
    System.out.println("Value via JMX: contextRoot: " + connection.getAttribute(mBeanName, "contextRoot"));
}

如果您的WAR文件绑定在EAR文件中;则CCD_ 6应类似于CCD_ 7

有关更多详细信息,请参阅https://docs.jboss.org/author/display/WFLY8/JMX+子系统+配置

最新更新