标签: jconsole

CompositeData没有keys()方法?

我正在使用JMX从远程进程中保存一些诊断信息.查看jconsole中的接口显示返回类型是CompositeData(数据实际上作为CompositeDataSupport返回).我想输出与此对象关联的所有键/值对.

问题是接口似乎有一个"values()"方法,无法获取密钥.我在这里错过了什么吗?还有其他方法可以完成这项任务吗?

谢谢!

java jmx diagnostics jconsole

6
推荐指数
1
解决办法
2570
查看次数

JConsole如何决定使用JMX密钥渲染树的顺序?

在JConsole中查看JMX bean时,它会将给定域部分下的所有bean呈现为层次结构.(JVisualVM与JConsole MBeans插件具有相同的行为.)

我意识到JMX对象名称不是分层的,但JConsole仍然按某种顺序选择键,以便它可以分层次地呈现它们.

有人知道它用来订购钥匙的规则是什么吗?它似乎不是从左到右或按字母顺序排列的.

谢谢.

jmx jconsole jvisualvm objectname

6
推荐指数
1
解决办法
857
查看次数

有没有办法用ibm-jdk for linux进行实时堆转储?

我知道当在这个JVM上发生OutOfMemoryException时可以转储堆,但是可以用jmap或jconsole等工具询问实时转储吗?

java jconsole jdk1.6 jmap

6
推荐指数
2
解决办法
8347
查看次数

如何读取由jconsole创建的堆转储文件?

我通过在jconsole中调用com.sun.management.HotSpotDiagnostic MXBean的dumpHeap操作来手动执行堆转储.所以我得到了一个转储文件.

我的问题:jconsole可以读取转储文件吗?如果没有,哪个工具可以读取它?谢谢!

编辑:现在我知道jconsole不提供读取功能,我想知道为什么jconsole只写没有读取功能的转储文件.(这不是我的问题,我只是关于它的问题)

java dump jconsole

6
推荐指数
2
解决办法
2万
查看次数

如何使用Jconsole连接到EC2?

我在我的macbook上运行Jconsole并尝试连接到没有图形的ec2上的linux终端(只有命令行访问).

我像这样运行我的代码:

java -jar program.jar -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9005 
-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.remote.ssl=false
Run Code Online (Sandbox Code Playgroud)

在这里读到通过EC2访问时出现问题(连接后出现问题)并且解决方案似乎是' java.rmi.server.hostname to the public hostname of the instance'

我对如何做到这一点感到有点困惑.我尝试了两件事,一件是将它直接放在我的代码中(在void static main部分中):

System.setProperty( "java.rmi.server.hostname" , "external_EC2_address" ); //in my real code I have the correct address here
Run Code Online (Sandbox Code Playgroud)

系统接受了它(当我创建/上传runnable jar时没有错误).我还在我的实例上打开防火墙以允许所有TCP流量.没运气.我尝试上述声明也作为启动程序的标志,但仍然没有运气.

有什么想法怎么做?

更新:这将显示我在Java的绿色,我更进一步(仍然无法工作),但我意识到把java -jar filename.jar,然后选项没有给我与放我的相同的结果-jar在命令的末尾.我试过了,程序试图连接,然后说连接失败(之前它只是在登录界面说它).

java rmi jconsole amazon-ec2

6
推荐指数
1
解决办法
4721
查看次数

JVisualVM无法使用--openpid参数连接到进程

我有一个作为win-service运行的应用程序(使用Apache-Procrun).我想用JVisualVM监视该应用程序.我--openpid <PID>没有成功使用命令行参数,具有讽刺意味的是,旧的JConsole设法连接到该应用程序.

JVisualVM vs JConsole 0:1

我还检查%TMP%\hsperfdata_username了JVisualVM- 故障排除指南中描述的-Directory的所有问题.一切都很好.

如何让JVisualVM监控我的应用程序?

java jconsole jvisualvm procrun java-service-wrapper

6
推荐指数
1
解决办法
4486
查看次数

Wildfly 8 Final - jconsole无法远程连接

美好的一天,人们,

我正在尝试使用jconsole连接到远程Wildfly 8 Final服务器.这不起作用:连接失败.经过多次尝试和失败后,我试图让它至少连接到我的'localhost'jboss,但即使这样也行不通.没有错误,它只是没有连接并说"连接失败".

细节:

  1. Wildfly 8 Final服务器
  2. 使用来自wildfly_installation/bin/jconsole.bat的jconsole
  3. 管理用户创建.尝试使用和不使用用户名/密码.
  4. standalone.xml是原始的,随Wildfly 8 Final一起提供,没有任何变化
  5. 我插入jconsole连接的url是:service:jmx:remoting-jmx:// localhost:9999
  6. Wildfly/jboss没有任何部署,没有WAR/EAR.
  7. Java版本是1.7版本51.最新的写作时刻.
  8. JAVA_HOME指向系统上安装的唯一java 1.7.
  9. JConsole可以连接到本地java进程并且可以工作,但不能远程连接.

基本上它是Wildfly 8 Final的全新安装,管理用户创建并且jconsole无法远程连接到它.

还有我尝试过的其他内容:我已经阅读了很多有关jconsole和Jboss AS 7.x的人的帖子.我已经尝试过这些线程的建议,但都没有奏效.另外,Wildfly 8似乎有不同的JMX版本(Jboss 7.x中的1.3 vs 1.1),所以我认为这就是为什么Jboss 7.x的standalone.xml建议不能用于Wildfly 8 Final.

jconsole wildfly

6
推荐指数
2
解决办法
1万
查看次数

JConsole与JBoss EAP的远程连接

我正在尝试连接到服务器上运行的远程jboss实例.我使用以下连接URL

服务:JMX:远程-JMX://90.214.64.170:9999

当我这样做时,我在控制台窗口中收到以下2个错误

在此输入图像描述

选择不安全后,我会看到这个

在此输入图像描述

我有,在通过jconsole连接之前也去了我的jboss服务器的bin目录并运行./jconsole.sh,它输出以下命令行

CLASSPATH /usr/bin/java/jdk1.8.0_11/lib/jconsole.jar:/usr/bin/java/jdk1.8.0_11/lib/tools.jar:/var/opt/jboss/modules/system/layers/base/org/jboss/remoting-jmx/main/remoting-jmx-1.1.2.Final-redhat-1.jar:/var/opt/jboss/modules/system/layers/base/org/jboss/remoting3/main/jboss-remoting-3.2.18.GA-redhat-1.jar:/var/opt/jboss/modules/system/layers/base/org/jboss/logging/main/jboss-logging-3.1.2.GA-redhat-1.jar:/var/opt/jboss/modules/system/layers/base/org/jboss/xnio/main/xnio-api-3.0.7.GA-redhat-1.jar:/var/opt/jboss/modules/system/layers/base/org/jboss/xnio/nio/main/xnio-nio-3.0.7.GA-redhat-1.jar:/var/opt/jboss/modules/system/layers/base/org/jboss/sasl/main/jboss-sasl-1.0.3.Final-redhat-1.jar:/var/opt/jboss/modules/system/layers/base/org/jboss/marshalling/main/jboss-marshalling-1.4.2.Final-redhat-1.jar:/var/opt/jboss/modules/system/layers/base/org/jboss/marshalling/river/main/jboss-marshalling-river-1.4.2.Final-redhat-1.jar:/var/opt/jboss/modules/system/layers/base/org/jboss/as/cli/main/jboss-as-cli-7.3.0.Final-redhat-14.jar:/var/opt/jboss/modules/system/layers/base/org/jboss/staxmapper/main/staxmapper-1.1.0.Final-redhat-2.jar:/var/opt/jboss/modules/system/layers/base/org/jboss/as/protocol/main/jboss-as-protocol-7.3.0.Final-redhat-14.jar:/var/opt/jboss/modules/system/layers/base/org/jboss/dmr/main/jboss-dmr-1.2.0.Final-redhat-1.jar:/var/opt/jboss/modules/system/layers/base/org/jboss/as/controller-client/main/jboss-as-controller-client-7.3.0.Final-redhat-14.jar:/var/opt/jboss/modules/system/layers/base/org/jboss/threads/main/jboss-threads-2.1.1.Final-redhat-1.jar
Run Code Online (Sandbox Code Playgroud)

我不知道还有什么我可以尝试(也开了端口9999)让这个工作,有没有人有任何建议或提示,可能有助于解决这个问题?

谢谢

编辑

将我的standalone.conf文件修改为此文件

#
# Specify options to pass to the Java VM.
#
if [ "x$JAVA_OPTS" = "x" ]; then
   JAVA_OPTS="-Xms1303m -Xmx1303m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true"
   JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS -Djava.awt.headless=true"
   JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote"
   JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=9999"
   JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"
   JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
else
   echo "JAVA_OPTS already set in environment; overriding default settings with values: $JAVA_OPTS"
fi
Run Code Online (Sandbox Code Playgroud)

我仍然无法连接 - 与上面相同的错误

java jboss jmx jconsole

6
推荐指数
3
解决办法
3万
查看次数

将JConsole连接到NAT服务器后面的Docker上运行的GlassFish服务器

我的基础架构以这种方式构建(在AWS上):

|NAT| <--> |ServerA| <--> |DockerContainer| <--> |GlassFish4.0|
Run Code Online (Sandbox Code Playgroud)

ServerA有一个运行Glassfish 4.0版的Docker容器

ServerA通过NAT服务器访问Internet.

要连接到ServerA,我要通过SSH连接到NAT服务器,然后SSH到ServerA.

这个运行顺利,没有任何问题.

现在我需要将本地计算机上的JConsole连接到GlassFish服务器,这是我遇到问题并需要一些帮助的地方.

我将以下JVM选项添加到domain.xml文件中:

<jvm-options>-Dsun.management.jmxremote.level=FINEST</jvm-options>
<jvm-options>-Dsun.management.jmxremote.handlers=java.util.logging.ConsoleHandler</jvm-options>
<jvm-options>-Djava.util.logging.ConsoleHandler.level=FINEST</jvm-options>
<jvm-options>-Dcom.sun.management.jmxremote.local.only=false</jvm-options>
<jvm-options>-Dcom.sun.management.jmxremote.ssl=false</jvm-options>
<jvm-options>-Dcom.sun.management.jmxremote.authenticate=false</jvm-options>
<jvm-options>-Dcom.sun.management.jmxremote.port=9010</jvm-options>
<jvm-options>-Dcom.sun.management.jmxremote.rmi.port=9010</jvm-options>
<jvm-options>-Dcom.sun.management.jmxremote.host=0.0.0.0</jvm-options>
<jvm-options>-Djava.rmi.server.hostname=10.0.0.115</jvm-options>
Run Code Online (Sandbox Code Playgroud)

其中10.0.0.115(对于java.rmi.server.hostname)是ServerA的本地地址.

然后我创建一个从我的本地机器到NAT服务器的SSH隧道,如下所示:

ssh -L 9010:localhost:9010 nat
Run Code Online (Sandbox Code Playgroud)

然后我像这样建立另一个到ServerA的SSH隧道:

ssh -L 9010:localhost:9010 serverA
Run Code Online (Sandbox Code Playgroud)

在docker容器上,我在docker run上公开了端口9010,如下所示:

docker run --restart=always --name $CONTAINER_NAME  \
-d  \
-p 4848:4848 \
-p 8080:8080 \
-p 9010:9010 \
my container
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试连接JConsole时,我使用localhost:9010但失败了.

我试图telnet到localhost 9010,看起来它成功了:

telnet localhost 9010
Trying ::1...
Connected to localhost.
Escape character is '^]'.




^C^C^C^C^C^C


^]
::
exit
^Z^Z^X^C^V^M

Connection …
Run Code Online (Sandbox Code Playgroud)

java ssh jmx glassfish jconsole

6
推荐指数
0
解决办法
314
查看次数

java.lang.SecurityException:在存根中需要sun.rmi.server.UnicastRef2远程引用

我正在尝试使用Ubuntu计算机上的JConsole工具连接到在另一台计算机上运行的远程Java进程。

这就是我在远程计算机上运行Java程序的方式:

sudo java -Dcom.sun.management.jmxremote.port = 51082 -Dcom.sun.management.jmxremote.authenticate = false -Dcom.sun.management.jmxremote.ssl = false -jar myfile.jar

我在我的机器上像这样运行JConsole命令:

jconsole-调试-J-Djava.util.logging.config.file = Logging.properties

这是我的Logging.properties文件:

handlers = java.util.logging.ConsoleHandler

sun.rmi.level=FINEST
.level = INFO

java.util.logging.ConsoleHandler.level = FINEST

java.util.logging.ConsoleHandler.formatter = \

java.util.logging.SimpleFormatter

// Use FINER or FINEST for javax.management.remote.level - FINEST is

// very verbose...

javax.management.level = FINEST

javax.management.remote.level = FINER
Run Code Online (Sandbox Code Playgroud)

现在在我的Jconsle UI上,我给出了以下属性:

在此处输入图片说明

当我单击Connect按钮时,出现异常提示:

    FINER: [javax.management.remote.rmi.RMIConnector: jmxServiceURL=service:jmx:rmi:///jndi/rmi://my-remote-host:51082/jmxrmi] failed to connect: java.lang.SecurityException: Expecting a sun.rmi.server.UnicastRef2 remote reference in stub!
    java.lang.SecurityException: Expecting a sun.rmi.server.UnicastRef2 remote reference …
Run Code Online (Sandbox Code Playgroud)

java ubuntu jmx jconsole

5
推荐指数
1
解决办法
2743
查看次数