Pregunta

Quería configurar la depuración remota desde Eclipse. Tomcat se ejecuta como un servicio en Windows.

Ese bit está bien, un rápido google me apuntó hacia la configuración correcta para agregar a wrapper.conf para habilitar esto. Ya había entradas en wrapper.conf, así que copié / pegué la última entrada y la modifiqué:

wrapper.java.additional.8="-Djava.endorsed.dirs=C:/Program Files/OurApp/tomcat/common/endorsed"
wrapper.java.additional.8.stripquotes=TRUE
wrapper.java.additional.9="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=9135,suspend=n"
wrapper.java.additional.9.stripquotes=TRUE

No funcionó, porque las citas están alrededor de todo, y las comillas de striptease solo se aplican a los sistemas linux.

Teóricamente, las entradas correctas deberían ser:

wrapper.java.additional.8=-Djava.endorsed.dirs="C:/Program Files/OurApp/tomcat/common/endorsed"
wrapper.java.additional.8.stripquotes=TRUE
wrapper.java.additional.9=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=9135,suspend=n

El segundo ejemplo no necesita comillas, no hay espacios para dividirlo. El primer ejemplo sí, debido a " Archivos de programa " ¿Estoy correcto en esta evaluación?

Si es así, ¿cómo / por qué funciona la aplicación como está? Hay varios parámetros que se establecen ostensiblemente como este (anidados en qutoes), que creo que en realidad no tienen ningún efecto.
Por ejemplo, los ajustes de memoria mín / máx.

Encontré un ejemplo aquí que tiene lo mismo, aparentemente es una configuración para Windows y Linux.

Mis preguntas: ¿Estas citas detendrán los comandos de configuración?
¿Por qué funciona la aplicación si ese es el caso?

¿Fue útil?

Solución

Después de un poco más de jugar y rastrear registros de depuración, creo que he aislado el problema. El problema fue la mezcla de 1 - Ser perezoso y poner dos elementos de configuración en la misma línea. (En mi defensa, lo copié como una línea de las preguntas frecuentes de Tomcat 2 - Usando comillas

La combinación de estos dos estaba causando el problema.

wrapper.java.additional.9="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=9135,suspend=n"
wrapper.java.additional.9.stripquotes=TRUE

De esta manera, genera una línea de comando:

java "-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=9135,suspend=n" ...

Trata esa cadena entera como un solo argumento, en lugar de los dos como pretendía.

Sin las comillas     wrapper.java.additional.9 = -Xdebug -Xrunjdwp: transport = dt_socket, server = y, address = 9135, suspend = n     wrapper.java.additional.9.stripquotes = TRUE Genera:

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=9135,suspend=n ...

Al ver que no hay comillas para arruinar las cosas, procesa los dos parámetros -X como quisiera. Aún mejor (y probablemente el uso previsto) como dos entradas separadas

    wrapper.java.additional.9="-Xdebug" 
    wrapper.java.additional.9.stripquotes=TRUE
    wrapper.java.additional.10="-Xrunjdwp:transport=dt_socket,server=y,address=9135,suspend=n"
    wrapper.java.additional.10.stripquotes=TRUE

java "-Xdebug" "-Xrunjdwp:transport=dt_socket,server=y,address=9135,suspend=n" ...

Hay comillas alrededor de cada una, y las trata individualmente. Todas las entradas existentes están bien, porque solo establecen un elemento por línea.

Así que lo atribuiré a una experiencia de aprendizaje (suspiro) y me daré cuenta de que ahora sé mucho más sobre wrapper.conf que no sabía antes.

Saludos, evnafets

Otros consejos

Estoy usando depuración remota en Eclipse a través de archivos * .bat. Posiblemente será más fácil para usted.

Pasos para lograr:

  1. Descargue la instalación de tomcat en un archivo zip y copie todos los archivos en la carpeta bin
  2. Cree un archivo debug.bat con contenido como

    establece JPDA_ADDRESS = 8000

    establece JPDA_TRANSPORT = dt_socket

    llame a catalina.bat jpda start

Si obtienes un error que indica que el puerto ya está en uso, cambia 8000 a cualquier otro (8001, 8002, etc.).

Desde el lado de Eclipse:

  1. Abrir diálogo de depuración
  2. Nueva aplicación Java remota (pestaña Conectar: ??Host - localhost o cualquier otra dirección IP, Puerto - 8000;   Pestaña Fuente: agrega todos los archivos de origen (por ejemplo, elimina todos, agrega proyectos Java, selecciona todos los proyectos)
  3. Push Debug
  4. Establezca puntos de interrupción en Eclipse e intente llegar a ellos desde Tomcat

Si todavía está buscando otra solución, habría disparado para tomcat6w.exe, la aplicación de diálogo para configurar un servicio de Windows (disponible en el directorio bin de Tomcats). Creo que hay algunas opciones disponibles para establecer los parámetros de jvm como dijiste. Estas opciones irán al registro, configurando el servicio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top