Skip to main content

Command Palette

Search for a command to run...

Conectar JDK Mission Control con aplicación Java en Docker (Local)

Updated
2 min read
S

I have worked as a frontend and backend developer handling technologies such as Django, Ionic, Laravel, MySQL, Spring (Java), Oracle, NodeJS, Angular, VueJS with the goal of developing websites and mobile applications that offer high performance and are interactive.

You can learn more about me by visiting my website: www.stalinmaza.com

#frontend #backend #fullstack #javascript #nodejs #php

Si deseas poder conectarte a tu aplicación de Java para poder revisar el rendimiento de la misma utilizando JMX y tu aplicación esta dockerizada, puedes utilizar los siguientes pasos para poder realizarlo.

Hay que añadir algunas variables de configuración de JMX para que cuando se ejecute la aplicación, permita el acceso sin necesidad de aplicar SSH, sin solicitar autenticación con la siguiente configuración en docker.

Dockerfile

```dockerfile

CMD ["java", "-Dcom.sun.management.jmxremote.port=9090", "-Dcom.sun.management.jmxremote.rmi.port=9090", "-Dcom.sun.management.jmxremote.authenticate=false", "-Dcom.sun.management.jmxremote.ssl=false", "-Djava.rmi.server.hostname=localhost", "-jar", "/opt/handytec-portal/handytec-portal-backend-1.0.0.jar"]
```
- Puerto 9090 lo usará JMC para conectarse a la app en docker.
- hostname localhost para que utilize la red local una vez docker expone el puerto local de nuestra PC
- ssl=false para desactivar que necesitemos ssl al conectarnos
- authenticate=false para no necesitar credenciales al loguearnos

Ejecutar contenedor

Para ejecutar el contenedor debemos ejecutar el siguiente comando:

```bash
docker run -it --rm --env-file=./.env -p 8080:8080 -p 9090:9090 --name <containerName> <imageName>

```

- -it: Habilita el modo interactivo al ejecutar la imagen

- --rm: Eliminar el contenedor al terminar de utilizarlo

- --env-file=./.env: Cargar las variables de entorno al contenedor en base a un archivo .env

- -p 8080:8080: Mapear puertos desde el host hacia el contenedor <host:contenedor>

- --name <containerName>: Nombre del contenedor

- <imageName>: Nombre de la imagen de la cual se va a crear un contenedor

En este ejemplo se habilita el puerto 8080 para que lo utiliza la aplicación de Java y el puerto 9090 para que acceda el JMX.

JDK Mission Control

Al añadir una nueva conexión en la aplicación de JDK Mission Control, se solicita los siguientes parámetros:
- host: localhost
- port: 9090

Con esto, se puede hacer clic en el botón "Probar conexión" y en el apartado de "Status" debe salir "Success". Opcionalmente, se puede añadir un nombre personalizado a la conexión.

More from this blog

S

Stalin Maza Blog

25 posts

Desarrollador apasionado por la tecnología. En este blog comparto lo que aprendo, repaso conceptos clave y documento soluciones útiles que me han servido en mi camino profesional.