Depuración remota en servidores Tomcat y Jetty a través de Eclipse

Depurar, a través de Eclipse, aplicaciones web java es de gran utilidad. Permite visualizar valores de variables en tiempo de ejecución, además de poder trazar exactamente las partes de código por donde corre la aplicación. Para que funcione, Eclipse debe ser el encargado de correr el servidor de aplicaciones que usemos.

Pero que sucede cuando no nos es posible integrar el servidor dentro del IDE, ya sea por que el servidor se encuentre en una máquina distinta a la nuestra o simplemente por que no quieras que Eclipse gestione el servidor.
Para lograr depurar en estos casos, se usa el “Remote debugging” o mejor conocida como depuración remota en estos lados del planeta.

Primero que nada, debemos configurar nuestro servidor para habilitar la depuración remota. La magia de esta opción recae en las siguientes líneas:

-Xdebug
-Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n

Lo escrito en address=8000 corresponde al puerto de conexión a usar para depurar, en este caso es el puerto 8000.
Ahora, donde agregar estas líneas, depende de cual sea tu servidor de aplicaciones y de que manera lo inicies. Para este caso detallare como configurar Tomcat y Jetty, los que tienen distintas maneras de configurar, pero al fin y al cabo siempre cumplen el mismo propósito.

Tomcat

Se puede cambiar el script de ejecución de tomcat ubicado en:

$CATALINA_HOME/bin/catalina.sh (en linux)
$CATALINA_HOME/bin/catalina.bat (en windows)

Luego en este archivo debemos buscar la variable JAVA_OPTS (o crearla en caso de no existir) y agregar la configuración mencionada anteriormente, de tal manera que quede en una sola línea:

En linux

JAVA_OPTS="$JAVA_OPTS "-Xdebug" "-Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n

En windows

set JAVA_OPTS=%JAVA_OPTS% -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n

“$JAVA_OPTS ” y %JAVA_OPTS% sirven únicamente para conservar otras opciones de java que se hayan agregado con anterioridad, así no reemplazarlas con nuestros cambios.

Existe un par de opciones extras para windows (si, a veces lamentablemente debes lidiar con el tío Bill). Una de ellas es agregar las opciones a través de la pantalla de propiedades del monitor de tomcat (Esto funciona independiente que tengas o no corriendo tu tomcat como un servicio de windows).

Aquí se debe poner suma atención a los espacios que puedas poner al fin de cada línea, esta configuración es susceptible a espacios y si encuentra uno demás, no tomará esas opciones como válidas. Para evitarte problemas, copia y pega el código del inicio.

La segunda opción es ir a configurar estos parámetros directamente en el registro de windows, en la ruta:

HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\Tomcat6\Parameters\Java (Para tomcat 5 es igual, solo cambiar “Tomcat6″ por “Tomcat5″ en ruta del registro)

Luego entras a modificar la clave “Options” y agregas las dichosas líneas.

Jetty

En jetty, es necesario pasar los parámetros de configuración al correr el servidor. Para mi lo más simple fue crear un script que ejecute el siguiente comando:

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8125,suspend=n -jar start.jar

Ahora después de todo esto, ¿Como saber que está funcionando?. Simple, al iniciar nuestro servidor de aplicaciones, dependiendo de cual hayas configurado, saldrá algo como lo siguiente:

Tomcat en windows

Jetty en linux

Si te fijas, en la primera línea sale Listening for transport dt_socket at address: XXXX. Acá indicará cual puerto configuraste para depurar. Si te sale esto, felicidades, has completado la primera parte.

Eclipse

Luego por el lado de Eclipse, debemos configurarlo para que pueda conectarse al servidor de aplicaciones. Para esto vamos al ícono de Debug (el del bicho verde) y abrimos la ventana de depuración

En esta ventana debemos crear una nueva configuración del tipo “Remote Java Application”, donde los campos importantes a ingresar son:

  • El proyecto a depurar (obviamente donde se encuentre el código fuente)
  • Host o dirección ip de la máquina donde corre el servidor
  • Puerto configurado para depurar

Finalmente presionamos “Debug” para realizar la conexión al servidor. Si todo resultó como se esperaba, en la vista “Debug” de Eclipse, deberá aparecer la conexión ya establecida.

Terminado esto, ya puedes comenzar a poner breakpoints y depurar tu aplicación.

Noticia: Continuum en la flisol 2010

Continuum estará apoyando el Festival Latinoamericano de Instalación de Software Libre con cuatro de nosotros y tres charlas en las sedes de Santiago y Puerto Montt. A continuación los resúmenes de las charlas y quienes están detrás de ellas.

«Radiografía de un sitio Web (presente y futuro)»Ricardo Alfaro y Alter LagosSede Santiago de Chile

Charla orientada a mostrar como se hace un sitio web de hoy y que es lo que hay para el futuro. Explica desde la base del Lenguaje HTML,  CSS y Javascript . Parte mostrando como se estructura el código HTML y sus principales etiquetas (tags) (ayudado con Firebug/Firefox), luego da una introducción a CSS y finalmente una muestra del uso de  Javascript para manipular el DOM. Antes del cierre repasa superficialmente lo que viene en HTML5 como la web del futuro. Se hace uso de Firebug para hacer breves demostraciones en vivo y un video que muestre el paso de una vista sin diseño a una con diseño (CSS), además de screenshots y algunos textos en slides.

«Contribuyendo al OSS (nadie dijo que era fácil)»Leo SotoSede Puerto Montt

Historias, anécdotas y lecciones sobre cómo un desarrollador en este extremo del mundo puede colaborar en el globalizado mundo del OSS y obtener recompensas que jamás se le pasaron por la cabeza. En realidad contribuir al OSS no es difícil, pero hay códigos que respetar, una cultura que entender y algunos malos ratos que soportar que pueden desanimar mucho cuando uno empieza. Al final todo vale la pena porque la recompensa es mas grande que los malos ratos iniciales, y también por las lecciones que se aprenden en el camino. Transmitir esas lecciones en 45 minutos es tarea difícil, pero no imposible.

«Configurando una suite ligera de desarrollo Java Web 100% Open Source»Jorge RodriguezSede Puerto Montt

Para la programación web usando Java hay muchas herramientas de desarrollo, algunas comerciales, la mayoría free, pero todas suites muy pesadas. Esta charla muestra pasos para en pocos minutos configurar un ambiente de desarrollo ligero que permita desarrollar aplicaciones Web de tipo empresarial en la plataforma Java Enterprise Edition, y claro usando tecnología 100 % Open Source.

Nota: Trataremos de grabar las cuatro charlas para publicarlas en nuestra sección de videos.

El código de MQToolsBox ahora es Open Source.

MQToolsBox es una herramienta que construí al no encontrar nada en la web o en los SupportPacs de IBM que permitiera realizar pruebas funcionales y de carga a servicios Websphere MQ.

La herramienta permite realizar tareas básicas de administración como; vaciar una cola, colocar un mensaje de prueba con el MQMD modificado, listar mensajes y obtener el contenido de los mensajes.

El código del proyecto es abierto, y puede bajarse desde http://github.com/icpchave/MQToolsBox

Para probar necesitan las bibliotecas de Websphere MQ (com.ibm.mq.jar, com.ibm.mq.pcf-6.*.jar, connector.jar, pcf.jar); Deben agregarlas manualmente porque por temas de licencia no se pueden compartir.

Importante:

La herramienta debe ser utilizada responsablemente, pues podrían causar inconsistencias en sus ambientes borrando e insertando requerimientos en sus servicios.

Me gustaría tener feedback de tipo: aportes al código, críticas, comentarios, etc. Así es que si te quieres involucrar te doy la bienvenida.

« Entradas Anteriores

Conócenos

Tel: +56 2 9341951

e-mail: info@continuum.cl

Copyright © 2010 Continuum Ltda.
Coronel Pereira 72. Oficina 903. Las Condes. Santiago. Chile