Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I use Jconsole to connect to EC2?

I am running Jconsole on my macbook and trying to connect to a linux terminal on ec2 that does not have graphics(only command line access).

I run my code like this:

java -jar program.jar -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9005 
-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.remote.ssl=false

I read here that there was a problem with accessing via EC2(after I had problems connecting) and the solution seemed to be 'java.rmi.server.hostname to the public hostname of the instance'

I'm a bit confused at how to do this. I have tried two things, one to put it directly in my code(in the void static main section):

System.setProperty( "java.rmi.server.hostname" , "external_EC2_address" ); //in my real code I have the correct address here

The system accepted it(no errors when I created/uploaded runnable jar). I also opened the firewall on my instance to allow all TCP traffic. No Luck. I tried the above statement also as a flag to launch to the program but still no luck.

Any ideas how do this?

UPDATE: This will show how green I am at Java, I got a step further(still doesn't work) but I realized putting the java -jar filename.jar and then the options didn't give me the same results as putting my -jar at the end of the command. I tried that and the program tries to connect and then says connection failed(before it would just say it at the login screen right away).

like image 672
Lostsoul Avatar asked Apr 02 '12 23:04

Lostsoul


People also ask

How do I open Java monitoring and management console?

Starting JConsole. The jconsole executable can be found in JDK_HOME/bin, where JDK_HOME is the directory in which the Java Development Kit (JDK) is installed. If this directory is in your system path, you can start JConsole by simply typing jconsole in a command (shell) prompt.


2 Answers

Set the hostname property before the VM starts:

java -Dcom.sun.management.jmxremote \
     -Dcom.sun.management.jmxremote.port=9005 \
     -Dcom.sun.management.jmxremote.authenticate=false \
     -Dcom.sun.management.remote.ssl=false \
     -Djava.rmi.server.hostname=the.public.ip \
     -jar program.jar

Add the relevant rules to your security group.

Finally, ensure iptables is stopped, as this could be the reason that you're not getting a connection from the outside world. As root (or using sudo ...):

# service iptables stop
like image 64
Greg Kopff Avatar answered Oct 02 '22 14:10

Greg Kopff


You need to open up the JMX remote port (9005 according to your example above) in the security group for your instance.

like image 41
gareth_bowles Avatar answered Oct 02 '22 14:10

gareth_bowles