与以前的版本相比,JBoss AS7的目标之一是使其在默认情况下更加安全。 受此目标直接影响的领域之一是,您不再期望服务器在端口上公开某些服务,而无需任何身份验证/授权就可以访问它。 请记住,在以前的JBoss AS版本中,只要打开了这些端口以进行远程通信,就可以访问JNDI端口,JMX端口而无需任何身份验证/授权。 在JBoss AS7中,此类端口上用于通信的更细粒度的授权允许服务器控制谁可以通过该端口调用操作。
当然,这不仅限于JBoss AS7,而且仍然是WildFly(这是JBoss Application Server的重命名)的目标。 实际上,WildFly向前迈了一步,现在具有“一个单一端口”的功能,可以进行所有通信。
JBoss AS7和WildFly中的JMX通信
在此背景下,我们现在将重点介绍JBoss AS7和WildFly中的JMX通信。 在本文的其余部分中,我将使用WildFly(8.2.0 Final)作为参考,但是相同的细节(略有变化)适用于JBoss AS7和WildFly的其他主要版本,这些版本到目前为止已经发布。
WildFly服务器由“子系统”组成,每个子系统都具有一组特定的功能。 例如,有支持Java EE功能集的EE子系统。 然后是支持Web / HTTP服务器功能的Undertow子系统。 同样,有一个JMX子系统公开了服务器上的JMX功能集。 众所周知,我敢肯定,JMX服务通常用于监视甚至管理Java服务器,其中包括远程管理服务器。 WildFly中的JMX子系统允许远程访问JMX服务,并且端口9990是用于该远程JMX通信的端口。
JConsole用于针对JBoss AS7和WildFly进行远程JMX访问
Java(JDK)与JConsole工具捆绑在一起,该工具允许连接到公开JMX服务的本地或远程Java运行时。 该工具易于使用,您所要做的就是运行jconsole命令,它将显示一个图形菜单,列出所有本地Java进程,以及一个用于指定远程URL以连接到远程进程的选项: