3 votes

Service Tomcat : guillemets dans wrapper.conf

Je voulais configurer le débogage à distance à partir d'Eclipse. Tomcat est exécuté en tant que service sous Windows.

Cette partie est correcte, une rapide recherche sur Google m'a indiqué les paramètres corrects à ajouter à wrapper.conf pour l'activer. Il y avait déjà des entrées dans wrapper.conf, donc j'ai copié/collé la dernière entrée et l'ai modifiée :

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

Cela n'a pas fonctionné, parce que les guillemets sont autour de tout, et que le stripquotes ne s'applique qu'aux systèmes linux.

Théoriquement, les entrées correctes devraient être :

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

Le deuxième exemple n'a pas besoin de guillemets - il n'y a pas d'espace pour le séparer. Le premier exemple en a besoin - à cause de "Program Files". Ai-je raison ?

Si oui, comment/pourquoi l'application fonctionne-t-elle telle quelle ? Plusieurs paramètres sont apparemment définis de cette manière (imbriqués dans des qutoos), mais je pense qu'ils n'ont en fait aucun effet.
Par exemple, les paramètres de mémoire min/max.

J'ai trouvé un exemple aquí qui a la même chose, étant ostensiblement une configuration pour Windows et linux.

Mes questions : Ces guillemets empêcheront-ils les commandes de configuration de passer ?
Pourquoi l'application fonctionne-t-elle si c'est le cas ?

3voto

evnafets Points 417

Après avoir joué un peu plus et parcouru les journaux de débogage, je pense avoir isolé le problème. Le problème était un mélange de 1 - Être paresseux et mettre deux éléments de configuration sur la même ligne. (Pour ma défense, je l'ai copié sur une seule ligne à partir de la FAQ Tomcat 2 - Utilisation des citations

La combinaison de ces deux éléments était à l'origine du problème.

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

Comme ceci, il génère une ligne de commande :

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

Il traite la chaîne entière comme un seul argument - plutôt que les deux comme je l'avais prévu.

Sans les citations wrapper.java.additional.9=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=9135,suspend=n wrapper.java.additional.9.stripquotes=TRUE Il génère :

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

Puisqu'il n'y a pas de guillemets pour tout gâcher, il traite les deux paramètres -X comme je le voudrais. Encore mieux (et probablement l'utilisation prévue) comme deux entrées séparées

    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" ...

Il y a des citations autour de chacun d'eux, et il les traite individuellement. Les entrées existantes sont toutes correctes, car elles ne définissent qu'un seul élément par ligne.

Je vais donc mettre cela sur le compte d'une expérience d'apprentissage (soupir) et réaliser que je connais maintenant beaucoup plus de choses sur wrapper.conf que je n'en savais auparavant.

Santé, evnafets

1voto

FoxyBOA Points 3334

J'utilise le débogage à distance dans Eclipse via des fichiers *.bat. Il est possible que ce soit un moyen plus facile pour vous.

Étapes à accomplir :

  1. Téléchargez l'installation de tomcat dans le fichier zip et copiez tous les fichiers dans le dossier bin.
  2. Créez le fichier debug.bat avec un contenu tel que

    set JPDA_ADDRESS=8000

    set JPDA_TRANSPORT=dt_socket

    call catalina.bat jpda start

Si vous obtenez une erreur indiquant que le port est déjà utilisé, remplacez 8000 par un autre (8001, 8002, etc.).

Du côté d'Eclipse :

  1. Ouvrir le dialogue de débogage
  2. Nouvelle application Java distante (onglet Connecter : Hôte - localhost ou toute autre adresse IP, Port - 8000 ; Onglet Source : Ajouter tous les fichiers source (par exemple, supprimer tout, ajouter un projet Java, sélectionner tous les projets)
  3. Pousser Debug
  4. Définir des points d'arrêt dans Eclipse et essayer de les atteindre depuis Tomcat

0voto

Olaf Kock Points 18072

Si vous cherchez toujours une autre solution, j'aurais tiré sur tomcat6w.exe, l'application de dialogue pour configurer un service Windows (disponible dans le répertoire bin de tomcats). Je crois qu'il y a des options disponibles pour définir les paramètres jvm comme vous l'avez dit. Ces options vont aller dans la base de registre, configurant le service.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X