Reputation: 3
I am trying to connect a VisualVM to a remote jboss EAP instance to check the performance. I have checked related posts but not got succeeded. The instruction I was following is:
Jboss EAP 7 - monitoring jboss using JvisualVM with JMX remote params
Connect to JBoss 7 using VisualVM
All effective lines in my standaline.conf follows:
if [ "x$JBOSS_MODULES_SYSTEM_PKGS" = "x" ]; then
JBOSS_MODULES_SYSTEM_PKGS="org.jboss.byteman,org.jboss.logmanager"
fi
# Uncomment the following line to prevent manipulation of JVM options
# by shell scripts.
#
#PRESERVE_JAVA_OPTS=true
#
# Specify options to pass to the Java VM.
#
if [ "x$JAVA_OPTS" = "x" ]; then
JAVA_OPTS="-Xms16g -Xmx16g -XX:MetaspaceSize=1g -XX:MaxMetaspaceSize=1g -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.port=9010 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/p:/home/admin/EAP-7.4.0/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-2.1.18.Final-redhat-00001.jar"
JAVA_OPTS="$JAVA_OPTS -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
else
echo "JAVA_OPTS already set in environment; overriding default settings with values: $JAVA_OPTS"
fi
# enable garbage collection logging if not set in environment differently
if [ "x$GC_LOG" = "x" ]; then
GC_LOG="true"
else
echo "GC_LOG set in environment to $GC_LOG"
fi
However I encountered the following error:
[admin@localhost bin]$ ./standalone.sh
=========================================================================
JBoss Bootstrap Environment
JBOSS_HOME: /home/admin/EAP-7.4.0
JAVA: java
JAVA_OPTS: -server -Xlog:gc*:file="/home/admin/EAP-7.4.0/standalone/log/gc.log":time,uptimemillis:filecount=5,filesize=3M -Xms16g -Xmx16g -XX:MetaspaceSize=1g -XX:MaxMetaspaceSize=1g -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman,org.jboss.logmanager -Djava.awt.headless=true -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 -Xbootclasspath/p:/home/admin/EAP-7.4.0/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-2.1.18.Final-redhat-00001.jar -Djava.util.logging.manager=org.jboss.logmanager.LogManager --add-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED --add-exports=jdk.unsupported/sun.reflect=ALL-UNNAMED
=========================================================================
-Xbootclasspath/p is no longer a supported option.
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
I tried to replace -Xbootclasspath/p with -Xbootclasspath/a and then got the following error:
java.lang.IllegalStateException: The LogManager was not properly installed (you must set the "java.util.logging.manager" system property to "org.jboss.logmanager.LogManager") at org.jboss.logmanager.Logger.getLogger(Logger.java:57) at [email protected]//org.jboss.as.server.Main.main(Main.java:89) at org.jboss.modules.Module.run(Module.java:353) at org.jboss.modules.Module.run(Module.java:321) at org.jboss.modules.Main.main(Main.java:617)
I also tried this: ./standalone.sh -Djava.util.logging.manager=org.jboss.logmanager.LogManager but with the same error.
I think it might be something related the diffrence between -Xbootclasspath/p (prepend) and -Xbootclasspath/a (append).
I also tried with --patch-module as followed
JAVA_OPTS="$JAVA_OPTS --patch-module org.jboss.logmanager=/home/admin/EAP-7.4.0/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-2.1.18.Final-redhat-00001.jar"
but got this error
=========================================================================
JBoss Bootstrap Environment
JBOSS_HOME: /home/admin/EAP-7.4.0
JAVA: java
JAVA_OPTS: -server -Xlog:gc*:file="/home/admin/EAP-7.4.0/standalone/log/gc.log":time,uptimemillis:filecount=5,filesize=3M -Xms16g -Xmx16g -XX:MetaspaceSize=1g -XX:MaxMetaspaceSize=1g -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman,org.jboss.logmanager -Djava.awt.headless=true -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 --patch-module org.jboss.logmanager=/home/admin/EAP-7.4.0/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-2.1.18.Final-redhat-00001.jar -Djava.util.logging.manager=org.jboss.logmanager.LogManager --add-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED --add-exports=jdk.unsupported/sun.reflect=ALL-UNNAMED
=========================================================================
WARNING: Unknown module: org.jboss.logmanager specified to --patch-module
Could not load Logmanager "org.jboss.logmanager.LogManager"
java.lang.ClassNotFoundException: org.jboss.logmanager.LogManager
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at java.logging/java.util.logging.LogManager$1.run(LogManager.java:239)
at java.logging/java.util.logging.LogManager$1.run(LogManager.java:223)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.logging/java.util.logging.LogManager.<clinit>(LogManager.java:223)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at java.management/sun.management.ManagementFactoryHelper$LoggingMXBeanAccess.getMXBeanImplementation(ManagementFactoryHelper.java:238)
at java.management/sun.management.ManagementFactoryHelper$LoggingMXBeanAccess.<init>(ManagementFactoryHelper.java:254)
at java.management/sun.management.ManagementFactoryHelper$PlatformLoggingImpl.getInstance(ManagementFactoryHelper.java:334)
at java.management/sun.management.ManagementFactoryHelper$PlatformLoggingImpl.<clinit>(ManagementFactoryHelper.java:337)
at java.management/sun.management.ManagementFactoryHelper.getPlatformLoggingMXBean(ManagementFactoryHelper.java:156)
at java.management/java.lang.management.DefaultPlatformMBeanProvider$9.nameToMBeanMap(DefaultPlatformMBeanProvider.java:386)
at java.management/java.lang.management.ManagementFactory.lambda$getPlatformMBeanServer$0(ManagementFactory.java:487)
at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:271)
at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
at java.base/java.util.HashMap$ValueSpliterator.forEachRemaining(HashMap.java:1692)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
at java.management/java.lang.management.ManagementFactory.getPlatformMBeanServer(ManagementFactory.java:488)
at jdk.management.agent/sun.management.jmxremote.ConnectorBootstrap.startRemoteConnectorServer(ConnectorBootstrap.java:475)
at jdk.management.agent/jdk.internal.agent.Agent.startAgent(Agent.java:447)
at jdk.management.agent/jdk.internal.agent.Agent.startAgent(Agent.java:599)
WARNING: Failed to load the specified log manager class org.jboss.logmanager.LogManager
Exception in thread "main" java.lang.NoClassDefFoundError: org/jboss/logmanager/Level
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:398)
at org.jboss.modules.Module.run(Module.java:341)
at org.jboss.modules.Module.run(Module.java:321)
at org.jboss.modules.Main.main(Main.java:617)
Caused by: java.lang.ClassNotFoundException: org.jboss.logmanager.Level
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at org.jboss.modules.JDKSpecific.getSystemClass(JDKSpecific.java:187)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:395)
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
I think I've provided the wrong modle name...
Summary:
Please kindly advice how to connect visualVM to JBOSS VM 7.4.0 with Java 11.
Thank you!
Upvotes: 0
Views: 255