我有一个简单的JMX应用程序,它基于本教程公开了MBean
是否可以在扩展JCONSOLE的类路径中使用自定义类启动此应用程序,以便当客户端尝试远程访问它时,扩展的jconsole窗口会打开?
例如,我创建了一个简单的应用程序并将其打包在MyApp.jar中.然后我在cmd中使用以下命令运行它:
java -classpath JconsoleExtension.jar;MyApp.jar
-com.sun.management.jmxremote.login.config=management.properties
-Djava.security.auth.login.config=./sample_jaas.config
com.test.running.RunningImplementation
Run Code Online (Sandbox Code Playgroud)
使用managepement.properties看起来像这样:
com.sun.management.jmxremote=true
com.sun.management.jmxremote.port=1234
com.sun.management.jmxremote.login.config=Sample
Run Code Online (Sandbox Code Playgroud)
客户端是否可以使用以下方式远程连接:
jconsole hostname:1234
Run Code Online (Sandbox Code Playgroud)
并使用扩展功能拉出jconsole窗口?
或者,客户端在尝试连接时是否必须引用扩展名,例如:
jconsole hostname:1234 -classpath JconsoleExtension.jar
Run Code Online (Sandbox Code Playgroud) 我希望能够通过jconsole记录所有可访问的JMX数据.有没有办法以编程方式执行此操作?我正在构建一种系统日志记录,我想用一些类似于jconsole的工具创建可查看的交互数据.
我该怎么做呢?
我正在尝试在J2EE服务器中诊断一些内存问题.我在我们的实时服务器上设置了jconsole,我正试图通过它监视tomcat服务器的状态.我有一个关于jconsole中Threads选项卡的快速问题.我可以在线程列表中看到一个名为Finalizer的线程.此线程中的"Total blocked"数字不断增加.例如,它现在是4,049,一小时前它是3,867.
Name: Finalizer
State: WAITING on java.lang.ref.ReferenceQueue$Lock@1b79cfd
Total blocked: 4,049 Total waited: 1,579
这个线程是什么意思?它是否与GC有关?我已经下载了一个堆转储,它显示了待完成的对象数量为零.
我的服务器的最大堆大小目前是200MB,堆大小保持在100到150 MB之间,当我点击'Perform GC'时,我可以看到一些堆空间被释放.但是,这并没有改变这个tomcat进程在Windows任务管理器中占用的内存量,它现在消耗超过700 MB.
任何关于我应该怎么做的提示都将非常感激.如果您需要有关我的服务器设置的更多信息,请向我提问.
提前致谢.
JConsole已经安静地查看JMX发布的计数器.还有什么其他选择?
除了实际上使用相同视图的JVisualVM之外,我无法找到任何其他内容
我有一些JMX Beans在我的应用程序中公开性能信息.我想有一些工具可以在图形中绘制MBean的属性以进行监控(Windows Perf Mon).我喜欢JConsole和VisualVM附带的东西,但我找不到一个好的插件,它可以让我在MBean上选择一个属性并对其进行监控.有人有主意吗?
我正在使用VNC连接到服务器.我可以VNC进入服务器,并打开Jconsole,但无论是否包含PID或尝试使用GUI连接,都无法连接到我的进程.奇怪的是,GUI中显示了所有进程.见下文.

我尝试连接时得到这个:

其次是

为了让Jconsole在VNC上的Linux服务器上本地工作,我需要做些什么吗?
新手在这里.我有一个java应用程序,我正在努力监视该java应用程序.我使用'JConsole'了解了java监视和管理控制.它提供了有关正在运行的java进程的非常详细的图形信息.
但我想知道的是关于用于生成图表的数据.和JConsole一样,我们可以通过右键单击运行图来保存csv格式的数据,是否有任何命令行选项只能以csv格式获取数据.
我有一个servlet.但它没有按预期工作.因此,出于调试目的,我想将语句打印到java控制台(可以使用任务栏中的java图标打开的控制台).但是,如果我使用System.out.println("message"),它不会在java控制台中显示.
有没有其他方法可以从servlet向控制台显示消息?或者任何人都可以建议我另一种方式向任何其他控制台显示消息?
很好的文档是如何配置默认JMX连接器来处理来自JMX客户端(如JConsole)的TLS/SSL安全连接,例如
-Dcom.sun.management.jmxremote.port=6789 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=true \
-Djavax.net.ssl.keyStore=/path/to/the/keystore.jks \
-Djavax.net.ssl.keyStorePassword=secr3t
Run Code Online (Sandbox Code Playgroud)
将JConsole与此连接器一起使用时,它会阻止警告"安全连接失败".不安全地重试?',一些用户发现令人吃惊(警告,而不是预防).
没有详细记录如何在构建a时以编程方式实现相同的目标JMXConnectorServer,例如
JMXConnectorServerFactory.newJMXConnectorServer(url, env, mBeanServerFactory);
Run Code Online (Sandbox Code Playgroud)
有人能把我推荐给一个经过验证的例子吗 这同样适用于建立一个RMIRegistry.我应该非常感激.
M.