使用VisualVM连接到JBoss 7

时间:2013-10-02 11:09:21

标签: jboss7.x jmx visualvm

我有远程JBoss 7.1服务器,我想使用VisualVM或JConsole连接到此服务器。

我google了一下,发现了几个关于如何使用VisualVM或JCoonsole连接JBoss 7.1的线程/教程,例如:

不幸的是,我没有通过JMX连接到我的JBoss 7.1。

您对如何使用VisualVM连接JBoss 7.1有什么想法吗?

编辑: 我将-Dcom.sun.management.jmxremote.port = 1090 -Dcom.sun.management.jmxremote.authenticate = false添加到standalone.conf.bat,但是我遇到了异常: 引起:java.lang.IllegalStateException:LogManager不正确 alled(必须将“java.util.logging.manager”系统属性设置为“org.jboss.logmanager.LogManager”)。

所以,我为JAVA_OPTS添加了另一个选项:-Dcom.sun.management.jmxremote.port = 1090 -Dcom.sun.management.jmxremote.authenticate = false -Djava.util.logging.manager = org.jboss.logmanager .LogManager 但我得到的例外是:

Could not load Logmanager "org.jboss.logmanager.LogManager"
java.lang.ClassNotFoundException: org.jboss.logmanager.LogManager
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:356)

4 个答案:

答案 0 :(得分:6)

找到解决方案。我需要将以下参数添加到standalone.conf.bat中的JAVA_OPTS:

-Dcom.sun.management.jmxremote.port=1090 ^
-Dcom.sun.management.jmxremote.authenticate=false ^
-Dcom.sun.management.jmxremote ^
-Dcom.sun.management.jmxremote.ssl=false ^
-Djava.util.logging.manager=org.jboss.logmanager.LogManager ^
-Xbootclasspath/p:<JBOSS_PATH>/modules/org/jboss/logmanager/main/jboss-logmanager-1.2.2.GA.jar ^
-Xbootclasspath/p:<JBOSS_PATH>/modules/org/jboss/logmanager/log4j/main/jboss-logmanager-log4j-1.0.0.GA.jar ^
-Xbootclasspath/p:<JBOSS_PATH>/modules/org/apache/log4j/main/log4j-1.2.16.jar -Djboss.modules.system.pkgs=org.jboss.logmanager

注1:在Unix上使用\代替^

注意2:用您的JBoss 7.x安装路径替换<JBOSS_PATH>。我是c:/java/jboss-as-7.1.1.Final

答案 1 :(得分:3)

如果打开一个命令shell并输入“netstat -a”,你会在JMX端口1090上看到一些LISTENING吗?如果没有,也许你必须检查JBOSS配置。

https://community.jboss.org/thread/171346?start=0&tstart=0

答案 2 :(得分:3)

您可以直接连接到JBOSS JMX而不是VM(无需修改JAVA_OPTS)

确保在standalone.xml(JMX子系统处于活动状态)

中具有以下配置

在独立模式下(侦听端口9999):

<subsystem xmlns="urn:jboss:domain:jmx:1.1">  
  <show-model value="true"/>  
  <remoting-connector />  
</subsystem> 

在域模式下(侦听端口4447)

<subsystem xmlns="urn:jboss:domain:jmx:1.1">  
  <show-model value="true"/>  
  <remoting-connector use-management-endpoint="false"/>  
</subsystem>

然后我们需要一点点黑客攻击:由于JBoss JMX实现有点具体,我们需要将一些jboss lib包含在JVisualVM的类路径中

  • 获取文件$JBOSS_HOME/bin/jconsole.sh/jconsole.bat并将其复制/重命名为同一目录中的jvisualvm.sh / jvisualvm.bat。

  • 然后使用-cp:a "$CLASSPATH"代替-J-Djava.class.path="$CLASSPATH"

  • 将每个jvisualvm的可执行调用替换为jconsole

现在只需使用脚本启动visualVM并使用以下网址service:jmx:remoting-jmx://hostname:port添加新的JMX连接(文件菜单)(凭据是管理领域之一)

注意:如果您无法直接访问JMX端口,请考虑使用ssh隧道

答案 3 :(得分:1)

  1. 将JVM选项添加到run.conf(run.conf.bat) JAVA_OPTS =&#34; $ JAVA_OPTS -Dcom.sun.management.jmxremote.port = 9999 -Dcom.sun.management.jmxremote.authenticate = false -Dcom.sun.management.jmxremote.ssl = false -Dcom.sun.management .jmxremote&#34;

  2. 在Visual VM控制台中打开远程主机。并添加JMX Connection并将端口号设为&lt; 9999&gt;