当前位置: 首页 > 面试题库 >

如何在JVM上激活JMX以使用jconsole进行访问?

农波涛
2023-03-14
问题内容

如何在JVM上激活JMX以使用jconsole进行访问?


问题答案:

相关文档可在此处找到:

http://java.sun.com/javase/6/docs/technotes/guides/management/agent.html

使用以下参数启动程序:

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=9010
-Dcom.sun.management.jmxremote.rmi.port=9010
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false

例如这样的:

java -Dcom.sun.management.jmxremote \
  -Dcom.sun.management.jmxremote.port=9010 \
  -Dcom.sun.management.jmxremote.local.only=false \
  -Dcom.sun.management.jmxremote.authenticate=false \
  -Dcom.sun.management.jmxremote.ssl=false \
  -jar Notepad.jar

-Dcom.sun.management.jmxremote.local.only=false不是必需的,但没有它,就不能在Ubuntu上运行。该错误将是这样的:

01 Oct 2008 2:16:22 PM sun.rmi.transport. customer .TCPTransport$AcceptLoop executeAcceptLoop
WARNING: RMI TCP Accept-0: accept loop for ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=37278] throws
java.io.IOException: The server sockets created using the LocalRMIServerSocketFactory only accept connections from clients running on the host where the RMI remote objects have been exported.
    at sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(LocalRMIServerSocketFactory.java:89)
    at sun.rmi.transport. customer .TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:387)
    at sun.rmi.transport. customer .TCPTransport$AcceptLoop.run(TCPTransport.java:359)
    at java.lang.Thread.run(Thread.java:636)

参见http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6754672

还应注意-Dcom.sun.management.jmxremote.authenticate=false使任何人都可以访问,但是如果仅使用它来跟踪本地计算机上的JVM,则没关系。

更新:

在某些情况下,我无法访问服务器。如果我也设置了此参数,则此问题已解决:-Djava.rmi.server.hostname=127.0.0.1



 类似资料:
  • 我有以下情况: 我有一个使用 JMX 公开一些方法的应用程序,位于服务器上。目前,用户可以使用jconsole通过命令行连接到此内容。目前没有访问限制。 用户将登录到机器并以活动目录的形式存储访问权限。 我希望将身份验证和授权添加到 jmx 流程中,以便当用户在命令行中键入时: 它将检查他们的AD用户组,并确定他们是否有权读取或读写托管资源。 我有一个检索AD组的解决方案,但不是如何将其传递给JM

  • 我使用的是Artemis1.3,我希望使用jConsole来监视它(正如《如何监视Apache Artemis》中提出的那样)。 我通常能够连接到Artemis,但我对它的用法有一些问题。(这些问题主要是对接口的问题,因为我认为这些方法将通过JMX调用): 2)“ListMessages”的筛选器参数是什么?只有当我将其设置为null时,才会得到一个响应,但是每隔一个值,我只会得到一个空结果。

  • 多亏了来自NickFroty的youtube教程,我能够在php中创建一个合适的注册系统,我已经能够将他的代码从mysql转换为mysqli,并且能够在用户注册后通过电子邮件发送激活链接。 下面的代码将在数据库中插入注册详细信息,并在用户注册后将消息和激活链接发送到用户的电子邮件。 但是我现在有个问题。如果我点击链接,它会将用户导航到页面。 我的问题是:在用户点击激活链接后,它如何激活用户的帐户?

  • 我们试图分析一个在生产环境中运行的远程tomcat应用程序。问题是web池中的所有线程都被阻塞了,这似乎阻止了我们与jconsole、jmc甚至YourKit的连接。当jvm正常运行时,所有这些工具都可以正常工作。 来自jconsole的错误是超时: 这使得我们很难找出我们的应用程序出了什么问题。服务器没有使用太多cpu,并且有可用内存。因此,并不明显缺乏资源。jvm似乎已经死了 Java版本:j

  • 我不能访问phpMyAdmin上XAMPP Windows和问题一定是与MySQL,因为在XAMPP状态,它说MySQL数据库是DEACTIVATED。但是在我的XAMPP控制面板应用程序上,我已经启动了MySQL,它说正在运行,尽管我没有选中Svc勾选框(有必要吗?)。如何激活MySQL数据库,以便我可以运行phpMyAdmin? 另外,当我打开phpMyAdmin页面时,它会显示: *错误 M

  • 问题内容: 我正在寻找示例Java JMX代码以从另一个VM访问JMX属性的值。 使用JConsole,我可以毫无疑问地查看java.lang / Memory / Attributes / HeapMemory 我如何从VM中运行的Java程序中获得相同的信息? 需要任何命令行选项或其他需要启动的示例。 问题答案: 您需要设置一个JMXConnector。这是一个代码片段,它将获取远程计算机上已