jconsole 使用

与以前的版本相比,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以连接到远程进程的选项:

# Start the JConsole
$JAVA_HOME/bin/jconsole

假设您已经在本地启动了WildFly独立服务器。 现在,当您启动jconsole时,您会注意到WildFly Java进程在您可以连接到的本地运行进程中列出。 选择WildFly Java实例时,将自动连接到它,并且您会注意到服务器公开的MBean。 但是,在本文的上下文中,JConsole中的这种“本地过程”模式不是我们感兴趣的。

让我们使用该JConsole菜单中的“远程进程”选项,该菜单允许您指定用于连接到Java运行时的远程URL以及用于连接到该实例的用户名和密码。 即使我们的WildFly服务器在本地运行,我们也可以使用此“远程进程”选项尝试并连接到它。 因此,让我们尝试一下。 在此之前,让我们考虑以下几点:

  1. 请记住,WildFly中的JMX子系统允许在端口9990上进行远程访问
  2. 对于远程访问JMX,URL的格式为– service:jmx:[vendor-specific-protocol]:// [host]:[port]。 供应商特定的协议在这里很有趣。 对于WildFly,特定于供应商的协议是http-remoting-jmx。
  3. 请记住,WildFly在默认情况下是安全的,这意味着仅因为JMX子系统公开了9990端口以进行远程通信,并不意味着它已开放给任何人通信。 为了允许通过此端口进行通信,必须对调用方客户端进行身份验证和授权。 这由WildFly中的“ ManagementRealm”支持。 允许对此领域进行身份验证和授权的用户访问该端口。

牢记这些要点,让我们首先在管理领域中创建一个用户。 可以使用添加用户命令行脚本(位于JBOSS_HOME / bin文件夹中)完成此操作。 由于有足够的文档资料,因此我将不做详细介绍。 让我们假设我在管理领域中创建了一个名为“ wflyadmin”的用户,并使用了适当的密码。 要验证是否已正确创建用户,请在正确的领域中访问URL http:// localhost:9990 / console的WildFly管理控制台。 系统将要求您输入用户名和密码进行访问。 使用与新创建的用户相同的用户名和密码。 如果登录有效,那么您就很好。 如果不是,那么请确保您在添加新用户时做得正确(正如我说的,我将不赘述添加新用户的细节,因为这只会不必要地延长本文的篇幅)。

因此,在这一点上,我们已经创建了一个名为ManagementManager的名为“ wflyadmin”的用户。 我们将使用相同的用户帐户通过JConsole访问WildFly上的JMX服务。 现在让我们照常启动jconsole:

$JAVA_HOME/bin/jconsole

在JConsole菜单上,让我们再次选择“远程进程”选项,并在URL文本框中使用以下URL:

service:jmx:http-remoting-jmx://localhost:9990

注意:对于JBoss AS 7.xJBoss EAP 6.x ,供应商特定的协议是remoting-jmx,并且通信端口是9999 因此,URL为service:jmx:remoting-jmx:// localhost:9999

在用户名和密码文本框中,使用与新创建的用户/密码相同的密码。 最后,单击“连接”。 你看到了什么? 这是行不通的! 连接失败。 那么出了什么问题呢?

为什么JConsole对WildFly的远程访问不起作用?

您做了所有显而易见的事情来远程访问WildFly JMX服务,但您仍然看到JConsole无法连接到它。 可能是什么原因? 记住,在前面的几点中,我注意到“特定于供应商的协议”很有趣吗? 我们使用http-remoting-jmx,该协议内部依赖于某些WildFly / JBoss特定的库,主要用于远程通信以及身份验证和授权。 这些库特定于WildFly服务器,因此不是标准Java运行时环境的一部分。 启动jconsole时,它将使用标准类路径,该类路径仅包含JDK / JRE中的相关库。

要解决此问题,您需要做的是将WildFly服务器特定的库引入JConsole的类路径中。 在研究如何做之前,让我们看一下需要哪些WildFly特定的库。 工作所需的所有必要类均在JBOSS_HOME / bin / client /文件夹中的jboss-cli-client.jar中。 因此,我们需要做的所有事情就是将此jar包含在jconsole工具的类路径中。 为此,我们使用jconsole工具的-J选项,该选项允许将参数传递给jconsole的Java运行时。 执行该命令的命令是:

$JAVA_HOME/bin/jconsole -J-Djava.class.path=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/jconsole.jar:/opt/wildfly-8.2.0.Final/bin/client/jboss-cli-client.jar

(请注意,对于Windows,classpath分隔符是分号而不是冒号)


注意,针对JBoss AS 7.xJBoss EAP 6.x的服务器特定的jar名为jboss-client.jar,并且位于相同的JBOSS_HOME / bin / client目录位置。

因此,我们使用-J选项将-Djava.class.path作为参数传递给jconsole Java运行时。 注意,我们在该类路径中指定的不仅仅是服务器特定的jar。 这是因为,使用-Djava.class.path应该包含完整的类路径。 我们包括JConsole所需的Java JDK lib文件夹中的jar,以及该类路径中服务器特定的jar。

运行该命令应该像往常一样启动JConsole,让我们继续并选择“ Remote process”选项并指定与以前相同的URL:

service:jmx:http-remoting-jmx://localhost:9990

并使用与以前相同的用户名和密码,然后单击“连接”。 这次您应该能够连接,并且应该开始看到通过JMX公开的MBean和其他服务。

如何提供执行此必要的类路径设置的脚本?

由于尝试使用JConsole进行针对WildFly的远程访问是很平常的事情,因此可以合理地期望拥有一个设置类路径的脚本(如上所述),然后可以使用该脚本。 这就是为什么WildFly会提供这样的脚本的原因。 它位于JBOSS_HOME / bin文件夹中,称为jconsole.sh(对于Windows,称为jconsole.bat)。 这只是一个包装脚本,在适当设置了类路径之后,该脚本内部调用Java JDK中存在的jconsole工具。 您所要做的就是运行:

$JBOSS_HOME/bin/jconsole.sh

在真正的远程计算机上针对WildFly使用JConsole怎么办?

到目前为止,我们使用的是与WildFly实例在同一台计算机上的jconsole工具,这意味着我们可以访问文件系统上WildFly安装目录中存在的WildFly服务器特定jar的文件系统。 这使我们可以设置jconsole的类路径以指向本地文件系统上的jar?

如果要从一台远程计算机对另一台计算机上安装并运行的WildFly服务器运行jconsole,该怎么办。 在这种情况下,您的远程客户端计算机将无法访问WildFly安装目录的文件系统。 因此,要使jconsole在这种情况下运行,您必须将JBOSS_HOME / bin / jboss-cli-client.jar复制到远程客户端计算机上,并复制到您选择的目录中,然后按照说明设置jconsole工具的类路径并将其指向该jar位置。 这样一来,您就可以从远程计算机上的jconsole访问WildFly的JMX服务。

翻译自: https://www.javacodegeeks.com/2014/12/my-wiki-remote-jmx-access-to-wildfly-or-jboss-as7-using-jconsole.html

jconsole 使用

jconsole 使用_我的Wiki:使用JConsole对WildFly(或JBoss AS7)进行远程JMX访问相关推荐

  1. jconsole_我的Wiki:使用JConsole对WildFly(或JBoss AS7)进行远程JMX访问

    jconsole 与以前的版本相比,JBoss AS7的目标之一是使其在默认情况下更加安全. 受此目标直接影响的领域之一是,您不再期望服务器在端口上公开某些服务并无需任何身份验证/授权就可以访问它. ...

  2. 我的Wiki:使用JConsole对WildFly(或JBoss AS7)进行远程JMX访问

    与以前的版本相比,JBoss AS7的目标之一是使其在默认情况下更加安全. 受此目标直接影响的领域之一是,您不再期望服务器在端口上公开某些服务,而无需任何身份验证/授权就可以访问它. 请记住,在以前的 ...

  3. 百度地图标点点击变色_原神wiki地图工具,原神全地图资源标记全览

    原神正式服游戏已上线,而我这个原神三测玩家在这里想给刚踏入原神世界的萌新们提供原神wiki地图工具,原神全地图资源标记全览,帮助大家更快的投身到原神世界的冒险中.主要信息来源光环助手专区大神们的分享总 ...

  4. 我的世界java版合成表_合成 - Minecraft Wiki,最详细的官方我的世界百科

    此条目需要更新. 条目中某些信息已经不符合当前版本情况. 合成(Crafting)是一种在Minecraft中获得多种方块.工具和其他资源的方法.合成时,玩家必须先把物品从物品栏移入合成方格中.2×2 ...

  5. deepin恢复出厂_初始化 - deepin Wiki

    简介 初始化英文简称:init(initialization)是 Unix 和 类Unix 系统启动过程中的第一道程序,用来产生其它所有进程的程序. 它以守护进程的方式存在,其进程号为1,它将继续运行 ...

  6. java 森林_森林 - Minecraft Wiki,最详细的官方我的世界百科

      本文章介绍的是常规森林.关于其他森林生物群系,请见" 森林(Forest)群系是一种常见的茂密生物群系.它一共有3种变种. 森林群系的一大特点是在其绵延的地形中有大量的橡树与白桦树.在森 ...

  7. 我的世界java版如何看坐标_坐标 - Minecraft Wiki,最详细的官方我的世界百科

    Minecraft地图上的x, y和z坐标. 以俯视的视角展示了X和Z轴的图像.红色高亮表示与标准不同的轴. 坐标(coordinates)在数字上反映了玩家在世界中的位置. 坐标基于一个由互相垂直且 ...

  8. 我的世界java营火如何合成_营火 - Minecraft Wiki,最详细的官方我的世界百科

    营火 15(营火) 10(灵魂营火) 开采工具 可堆叠 是(64)‌‌[仅JE] 否‌‌[仅BE] 可燃尽 否 可被熔岩点燃 否 营火(Campfire) 是一种可用于烹饪食物并作为光源或烟雾信号使用 ...

  9. Java乘船_船 - Minecraft Wiki,最详细的官方我的世界百科

    船(Boat)是一种物品,也是一种交通工具实体. 船可以通过对其连续地攻击来获取.攻击力大于4的武器或工具能一击让船变成掉落物. 材料 合成配方 描述 对着船按下使用键或"上船"按 ...

最新文章

  1. django中的缓存 单页面缓存,局部缓存,全站缓存 跨域问题的解决
  2. Firefox联手Chrome合作开发网页VR标准
  3. VBA学习笔记(一):自动添加代码VBA修改注册表
  4. JS 四则运算精度丢失解决方案
  5. 分布式MQ消息存储选择
  6. 正則表達式,终极使用!3个工具,搞定一切
  7. 云图说|ModelArts Pro:让AI开发更简单
  8. 结构型模式:Decorator 装饰模式
  9. 判断触摸的点在那个 View上
  10. 【红茶原创】-MRTG Install In RedHat AS4
  11. MySQL8中文手册【持续更新】
  12. 数字钟Matlab仿真,简单数字钟仿真电路图大全(五款数字钟仿真电路图) - 全文...
  13. [TJOI2019]唱、跳、rap和篮球 题解
  14. 深度学习环境搭建 1 利用Anaconda安装pytorch、paddl和TensorFlow, PyQt5配置和使用
  15. 论一个程序员的自我修养
  16. 如何做到高效沟通和高效沟通的好处
  17. scrapy爬虫之爬取百度手机助手app信息并保存至mongodb数据库(附源码)
  18. c语言字母存储,字符串在内存中的储存——C语言进阶
  19. 给UILable中的文字添加删除线样式
  20. bios设置raid启动模式Linux,手把手教你做raid,各主板raid开启设置方法

热门文章

  1. jzoj6826-[2020.10.17提高组模拟]隔膜【博弈论】
  2. P1156-垃圾陷阱【dp】
  3. 牛客练习赛 61(待补F-点分治?)
  4. [NOI2014] 起床困难综合症(二进制,贪心)
  5. 2017西安交大ACM小学期数论 [完全平方数]
  6. 3、oracle数据库的语法基础
  7. Flume均匀发送数据到kafka的partition配置UUID Interceptor生成key的坑
  8. Druid SQL查询数据timeStamp时区问题
  9. 做到我这样,你也能拿到京东Offer
  10. 我猜,每个程序员对着电梯都想过调度算法吧