6 votes

Changer le port de Tomcat à la volée

J'aimerais enregistrer le port de Tomcat v5.5 dans une variable d'environnement et faire en sorte que Tomcat écoute sur ce port. Jusqu'à présent, le seul moyen que je vois pour changer le port est de modifier $CATALINA_HOME/conf/server.xml. Existe-t-il un moyen de définir la valeur du port en fournissant une valeur externe lors du démarrage de Tomcat ? J'exécute Tomcat sur Solaris.

20voto

Mark MacIver Points 26

Créez un script pour lancer Tomcat. Dans le script de lancement, exportez JAVA_OPTS pour spécifier une valeur pour la propriété Tomcat port.http.nonssl (vous pouvez appeler cette propriété comme vous le souhaitez).

export JAVA_OPTS=-Dport.http.nonssl=${CATALINA_BASE_PORT}

Comme vous pouvez le voir, j'ai mis port.http.nonssl à la variable d'environnement ${CATALINA_BASE_PORT}

Le script lance alors Tomcat :

$CATALINA_HOME/bin/startup.sh

Vous devez maintenant modifier le fichier Tomcat $CATALINA_HOME/conf/server.xml afin que le connecteur HTTP non-SSL utilise le fichier port.http.nonssl au lieu d'une valeur codée en dur.

<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector port="${port.http.nonssl}" maxHttpHeaderSize="8192"
           maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
           enableLookups="false" redirectPort="8443" acceptCount="100"
           connectionTimeout="20000" disableUploadTimeout="true" />

Désormais, Tomcat utilisera le port défini dans la variable d'environnement ${CATALINA_BASE_PORT} chaque fois que vous le lancerez via le nouveau script script.

1voto

Eric Pugh Points 1235

Pour faire suite à la première réponse de Mark MacIver, voici mon fichier start_solr.bat qui spécifie un port et une variable d'environnement :

if "%1" == "" goto displayUsage
set JAVA_OPTS=%JAVA_OPTS% -Dport.http.nonssl=%1 -Dsolr.solr.home=../../
call startup.bat
goto end

:displayUsage
echo.
echo Usage: start_solr.bat [port i.e. 9001]
goto end

:end
cd "%CURRENT_DIR%"

0voto

skaffman Points 197885

C'est un peu comme utiliser un marteau pour casser une noix, mais vous pourrait utiliser le Tomcat intégré à JBoss, qui dispose d'un mécanisme unifié pour substituer des propriétés système dans des fichiers de configuration arbitraires, y compris le server.xml de Tomcat. Votre variable d'environnement peut être transmise comme une propriété système dans le script de démarrage (en utilisant -D).

JBoss peut être réduit à son noyau et à Tomcat, de sorte que vous n'avez pas besoin d'exécuter tout le jeu de tir. Mais il serait toujours considérablement plus lourd que Tomcat autonome.

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