Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Connect Java Mission Control to Wildfly 16

Tags:

java

wildfly

jmc

I try to connect Java Mission Control (JMC) with Wildfly 16. Application server lays on Docker.

I successfully connected to wildfly via jconsole, to manage it I followed steps described here.

Unfortunately, I have no luck to connect via JMC. The URL which I use looks like this:

service:jmx:remoting-jmx://192.168.99.100:9990

  • I tried to set Xbootclasspath to jboss-cli-client.jar as it was described here, but I just get Unable to connect error.
  • I set the same jars, which are used for jconsole, but still I got Unable to connect.
  • I gave a try to adding flags on container site, as it was shown here, but with these flags, even wildfly haven't started.

Then, I found here the idea to hardcode some jboss classes to enable connection via remoting-jmx. I changed version of jars, according to these provided by wildfly16 and put it to jmc.ini like this.

-Xbootclasspath/a:"C:/Program Files/Java/jdk-10.0.2/lib/missioncontrol/dropins/jboss-cli-client.jar;C:/wildfly-16.0.0.Final/modules/system/layers/base/org/jboss/remoting-jmx/main/remoting-jmx-3.0.1.Final.jar;C:/wildfly-16.0.0.Final/modules/system/layers/base/org/jboss/remoting/main/jboss-remoting-5.0.8.Final.jar;C:/wildfly-16.0.0.Final/modules/system/layers/base/org/jboss/logging/main/jboss-logging-3.3.2.Final.jar;C:/wildfly-16.0.0.Final/modules/system/layers/base/org/jboss/xnio/main/xnio-api-3.6.5.Final.jar;C:/wildfly-16.0.0.Final/modules/system/layers/base/org/jboss/xnio/nio/main/xnio-nio-3.6.5.Final.jar;C:/wildfly-16.0.0.Final/modules/system/layers/base/org/jboss/marshalling/main/jboss-marshalling-2.0.6.Final.jar;C:/wildfly-16.0.0.Final/modules/system/layers/base/org/jboss/marshalling/river/main/jboss-marshalling-river-2.0.6.Final.jar;C:/wildfly-16.0.0.Final/modules/system/layers/base/org/jboss/as/cli/main/wildfly-cli-8.0.0.Final.jar;C:/wildfly-16.0.0.Final/modules/system/layers/base/org/jboss/staxmapper/main/staxmapper-1.3.0.Final;C:/wildfly-16.0.0.Final/modules/system/layers/base/org/jboss/as/protocol/main/wildfly-protocol-8.0.0.Final.jar;C:/wildfly-16.0.0.Final/modules/system/layers/base/org/jboss/dmr/main/jboss-dmr-1.5.0.Final.jar;C:/wildfly-16.0.0.Final/modules/system/layers/base/org/jboss/as/controller-client/main/wildfly-controller-client-8.0.0.Final.jar;C:/wildfly-16.0.0.Final/modules/system/layers/base/org/jboss/threads/main/jboss-threads-2.3.3.Final.jar;C:/wildfly-16.0.0.Final/modules/system/layers/base/org/jboss/logmanager/main/jboss-logmanager-2.1.7.Final.jar"

After that, finally, I have another error, which is

Could not initialize class org.jboss.remotingjmx.RemotingConnector

I added dependencies of remoting-jmx-3.0.1.Final to Xbootclasspath, but I got still the same error.

My question is, have you got any idea, how to make this connection works ? Maybe someone have done it in different way ?

Any advices how can i debug this problem, will be priceless? Because I'm lack of ideas how to solve it.

like image 202
MyWay Avatar asked May 19 '19 11:05

MyWay


1 Answers

  1. In %WILDFLY_HOME%\bin\standalone.conf.bat put:

    set "JAVA_OPTS=%JAVA_OPTS% -XX:+FlightRecorder"

  2. In jmc.ini below -vmargs put

    -Xbootclasspath/a:C:\%wildfly_home%\bin\client\jboss-cli-client.jar

(%wildfly_home% is different of course, or just copy jboss-cli-client.jar to another directory and correct the path) 3. Run JMC, then Create New Connection - in Connection Properties pane push the button "Custom JMX service URL", put:

service:jmx:http-remoting-jmx://localhost:9990    

In the credentials fields just put user and password, they should be created for Realm Management (e.g. using %wildfly_home%\bin\add-user.bat) Hope this helps someone.

like image 71
kriffer Avatar answered Nov 05 '22 20:11

kriffer