我有远程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)
答案 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配置。
答案 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"
现在只需使用脚本启动visualVM并使用以下网址service:jmx:remoting-jmx://hostname:port
添加新的JMX连接(文件菜单)(凭据是管理领域之一)
注意:如果您无法直接访问JMX端口,请考虑使用ssh隧道
答案 3 :(得分: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;
在Visual VM控制台中打开远程主机。并添加JMX Connection并将端口号设为&lt; 9999&gt;