We are having problem connecting to our Java applications running in Amazon's EC2 cluster. We definitely have allowed both the "JMX port" (which is usually the RMI registry port) and the server port (which does most of the work) to the security-group for the instances in question. Jconsole connects but seems to hang and never show any information.
We are running our java with something like the following:
java -server -jar foo.jar other parameters here > java.log 2>&1
We have tried:
- Telnets to the ports connect but no information is displayed.
- We can run
jconsole
on the instance itself using remote-X11 over ssh and it connects and shows information. So the JRE is exporting it locally. - Opening all ports in the security group. Weeee.
- Using
tcpdump
to make sure the traffic is not going to other ports. - Simulating it locally. We can always connect to our local JREs or those running elsewhere on our network using the same application parameters.
java -version
outputs:
OpenJDK Runtime Environment (IcedTea6 1.11.5) (amazon-53.1.11.5.47.amzn1-x86_64)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)
As an aside, we are using my Simple JMX package which allows us to set both the RMI registry and server ports which are typically semi-randomly chosen by the RMI registry. You can also force this with something like the following JMX URI:
service:jmx:rmi://localhost:" + serverPort + "/jndi/rmi://:" + registryPort + "/jmxrmi"
These days we use the same port for both the server and the registry. In the past we have used X
as the registry-port and X+1
for the server-port to make the security-group rules easy. You connect to the registry-port in jconsole
or whatever JMX client you are using.