jconsole怎么用_jconsole使用教程

jconsole怎么用_jconsole使用教程远程JMX连接的过程与本地JMX连接完全不同

远程JMX连接的过程与本地JMX连接完全不同。您可以通过4种方法进行JConsole远程监视

  1. SSL 和身份验证均已禁用。
  2. 已启用SSL和已禁用身份验证。
  3. 启用身份验证,并禁用SSL。
  4. SSL和身份验证均已启用。

每种远程连接方式都有其自身的优点和缺点。您可以根据连接的难易程度和连接的安全性来选择适当的方式。在本教程中,我们将研究所有 4种不同类型的JMX远程连接示例,以及每种示例的优缺点。在后续教程中,我们还将学习如何将JConsole连接到Tomcat,JBoss等。

什么是JMX RMI端口,并且有任何默认端口吗?

JMX RMI端口是您要监视的Java进程侦听来自客户端(远程管理应用程序)(例如JConsole)的传入连接的端口号。为了监视本地Java进程,无需指定JMX RMI端口号。但是,为了监视远程进程,您需要为Java应用程序分配一个RMI端口号。

没有默认JMX端口号,由于安全等原因。如果在不提供JMX RMI端口号的情况下启动应用程序,则将无法建立远程连接,因为没有端口号,JMX代理将无法 在主机JVM中启动RMI连接器

如何定义JMX端口号?

您必须通过设置系统属性“ com.sun.management.jmxremote.port”来定义JMX端口号 。 注意不要分配已经使用的TCP端口。如果尝试使用已经使用的端口,则Java应用程序将在启动时失败并抛出ExportException。出于开发目的,您可以选择49152-65535之间的任何端口,因为与保留端口相比,这些端口更安全。

对于生产环境,请小心拾取49152-65535之间的端口。操作系统可以根据它们的可用性将这些端口动态分配给正在运行的程序。如果您的应用程序停止了一段时间,同时操作系统将JMX端口号分配给了其他服务。您的应用程序将根本无法启动,直到客户端更改端口号或正在使用该端口的当前应用程序释放该端口为止。

 

JConsole –无需身份验证和SSL即可连接到远程JMX代理。

这是 建立远程JMX连接的最简单方法, 但也是 最不安全的方法。在开发阶段或通过专用网络监视应用程序时,应使用这种类型的连接。您需要设置以下4个属性来建立远程JMX连接。

1.  com.sun.management.jmxremote.ssl –默认值为true,这将启用客户端与JMX代理之间的安全套接字层(SSL)通信。在此示例中,我们将值设置为false以禁用SSL。

2. com.sun.management.jmxremote.authenticate –默认值为true,启用使用用户名和密码的身份验证。对于此示例,我们将其设置为false

3.  com.sun.management.jmxremote.port –如上所述,此属性用于设置用于通信的JMX RMI端口。

4.  java.rmi.server.hostname-运行Java应用程序的主机 的IP地址。该默认值是本地主机的IP地址。如果只有一个网络接口,则无需设置此属性。但是,如果您有多个活动的网络适配器。然后,您必须指定此值,因为Java程序可以选择任何一个网络适配器的IP地址。

启动Java应用程序。

我们将创建一个非常简单的Java程序,并尝试从远程计算机连接它。启动时的主线程将休眠10分钟。

https://gist.github.com/db39365ff75c7e73cfeeca1383f52245

对于Eclipse IDE,我们将在运行配置->参数-> VM参数中添加以下参数。

 

“ -Dcom.sun.management.jmxremote.port = <端口号>  -Dcom.sun.management.jmxremote.authenticate = false -Dcom.sun.management.jmxremote.ssl = false  -Djava.rmi.server.hostname = <主机的IP添加>”并运行程序。

 

jconsole怎么用_jconsole使用教程

用于从命令行运行程序。

java -Dcom.sun.management.jmxremote.port = <端口号>  -Dcom.sun.management.jmxremote.authenticate = false -Dcom.sun.management.jmxremote.ssl = false  -Djava.rmi.server.hostname = <主机的IP添加>完全限定的类名

运行应用程序以支持远程JConsole连接的命令行选项。

 启动JConsole。

在远程计算机上打开JConsole。选择远程进程单选按钮。按照以下格式输入主机的IP地址和JMX端口。<IP-添加>:<端口号>

 

jconsole怎么用_jconsole使用教程

由于在此远程连接示例中未使用身份验证,因此您可以将这两个字段保留为空。

 

jconsole怎么用_jconsole使用教程

当我们使用系统属性禁用SSL协议时,我们将收到上述警告“安全连接失败。不安全地尝试”。单击不安全建立连接。

 

jconsole怎么用_jconsole使用教程

最后,我们使用远程计算机连接到主机。

JConsole –通过身份验证连接到远程JMX代理。

 

此方法比不使用任何密码验证更安全。密码以明文形式存储在运行应用程序的主机上。由于未使用安全套接字层(SSL),因此入侵者可以侦听服务器和客户端之间的非加密通信并获取用户名和密码。不建议在生产环境中使用。

要启用身份验证,您需要创建访问和密码文件。在访问文件包含用户名角色分配给该用户。这两个角色是只读读/写角色。这些读取和读取/写入角色与可以在MBean上执行的操作有关。使用只读角色,您只能在MBean的属性上调用getter方法。但是具有读/写角色,您可以对属性执行设置操作或调用MBean接口定义的操作。该密码文件包含用户名和密码。

jmxremote.access

  管理员读
  来宾只读

查看原始jmxremote.access 主办了
由GitHub上

格式: 用户名“ <空白>角色”。

jmxremote.password

  管理员密码1
  访客密码2

查看原始jmxremote.password 主办了由GitHub上

格式: 用户名<空白>密码“。

下一步是将密码文件限制为对当前用户或启动要监视的JVM的用户具有只读权限。如果当前用户没有读取权限,则在应用程序启动时会出现以下错误-“错误:必须限制密码文件的读取访问权限”

Windows用户可以按照以下步骤操作。

  cacls jmxremote.password / P“用户名”:R

查看原始remote_jconsole_connection_change_password_permission.txt 与托管的GitHub上

在双引号中插入当前用户的用户名。“ R”表示提到的用户名将获得对该文件的只读权限。如果您不知道用户名,则可以使用“ whoami”命令找到它,如下所示。

 

jconsole怎么用_jconsole使用教程

Linux用户可以使用以下命令。

  chmod 600 jmxremote.password

查看原始remote_jconsole_connection_change_password_permission-linux.txt 与托管的GitHub上

启动Java应用程序。

要定义访问路径和密码文件,我们必须设置这两个属性“ com.sun.management.jmxremote.access.file ”和“ com.sun.management.jmxremote.password.file ”。这些文件的默认位置是“ JDK Path \ jre \ lib \ management \ jmxremote.password”和“ JDK Path \ jre \ lib \ management \ jmxremote.access”。如果未指定上述属性,则应用程序将在默认路径下查找这些文件。

对于Eclipse,将以下内容添加到VM属性中以通过身份验证运行JConsole。

 

“ -Dcom.sun.management.jmxremote.port = <端口号>  -Dcom.sun.management.jmxremote.ssl = false  -Djava.rmi.server.hostname = <主机的IP添加> -Dcom.sun。 management.jmxremote.access.file = <访问文件路径> -Dcom.sun.management.jmxremote.password.file = <密码文件路径> ”

要使用命令行运行应用程序,请使用以下命令。

java  -Dcom.sun.management.jmxremote.port = <端口号>  -Dcom.sun.management.jmxremote.ssl = false  -Djava.rmi.server.hostname = <主机的IP添加> -Dcom.sun。 management.jmxremote.access.file = <访问文件路径> -Dcom.sun.management.jmxremote.password.file = <密码文件路径> 完全合格的类名。

 

jconsole怎么用_jconsole使用教程

启动JConsole。

输入远程主机的IP地址和端口。在访问文件中,我们指定了两个不同的用户,每个用户具有不同的角色。我们将使用“ guest”用户名和“ password2”作为密码。

 

jconsole怎么用_jconsole使用教程

由于我们仅使用身份验证而不使用SSL,因此在单击“连接”后,我们将再次收到“不安全连接”警告。

 

jconsole怎么用_jconsole使用教程

当我们使用来宾用户名登录时,我们无法在任何资源上执行任何写操作(设置或调用)。如果尝试调用写操作,则会得到Security Exception。但是,使用 管理员凭据,我们可以成功执行这些写操作。

今天的文章jconsole怎么用_jconsole使用教程分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/63915.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注