Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to find the default JMX port number?

I am running a Java application on Java 6 VM on a remote Windows XP, on which I can run jvisualvm.exe to connect to the running application automatically.

Now I need to connect that application from my local computer, but I don't know the JMX port number of the remote computer. Where can I find it? Or, must I restart that application with some VM parameters to specify the port number?

After reading the question How to find the JMX port in a server, I executed the command on the remote computer

netstat -apn 

but got nothing.

like image 319
chance Avatar asked Apr 26 '12 09:04

chance


People also ask

How do I access my JMX port?

To open the JMX port on the remote JVM, you must enter the port number to use for the JMX RMI connection. Be sure to specify an unused port number. From a command line, go to the bin directory in the <JRE_HOME> directory that contains the Java Runtime Environment (JRE) implementation, for example jre/bin.

Can we change JMX port?

Changing the JMX Listener Port. The default Java Management Extensions (JMX) listener port is 5002. If multiple instances of My webMethods Server are running on the same computer, or if another application is already using that port, you must assign a different port number. You change the JMX listener port in the com.

What is JMX remote port?

Enables the JMX remote agent and creates a remote JMX connector to listen through the specified port. By default, the SSL, password, and access file properties are used for this connector. It also enables local monitoring as described for the com.

Is JMX enabled by default?

Local JMX access If you are using a Java SE 6 or later JVM, local JMX management and monitoring are most likely enabled by default.


1 Answers

Now I need to connect that application from my local computer, but I don't know the JMX port number of the remote computer. Where can I find it? Or, must I restart that application with some VM parameters to specify the port number?

By default JMX does not publish on a port unless you specify the arguments from this page: How to activate JMX...

-Dcom.sun.management.jmxremote -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 -Djava.rmi.server.hostname=localhost 

NOTE: you need to be careful of the security ramifications of some of the above settings.

Also, if you are running you should be able to access any of those system properties to see if they have been set:

if (System.getProperty("com.sun.management.jmxremote") == null) {     System.out.println("JMX remote is disabled"); } else [     String portString = System.getProperty("com.sun.management.jmxremote.port");     if (portString != null) {         System.out.println("JMX running on port "             + Integer.parseInt(portString));     } } 

Depending on how the server is connected, you might also have to specify the following parameter. As part of the initial JMX connection, jconsole connects up to the RMI port to determine which port the JMX server is running on. When you initially start up a JMX enabled application, it looks its own hostname to determine what address to return in that initial RMI transaction. If your hostname is not in /etc/hosts or if it is set to an incorrect interface address then you can override it with the following:

-Djava.rmi.server.hostname=<IP address> 

As an aside, my SimpleJMX package allows you to define both the JMX server and the RMI port or set them both to the same port. The above port defined with com.sun.management.jmxremote.port is actually the RMI port. This tells the client what port the JMX server is running on.

like image 168
Gray Avatar answered Sep 21 '22 06:09

Gray