J'ai un webProject avec un argument VM appelé "-Dfolder"
J'utilise cet argument sur applicationContext comme ceci:
<value>file:${FNET_CORE_CONFIG}/conf/${folder}/jdbc.properties</value>
Dans Eclipse, pour les tests, j'utilise "Run Configuration" pour définir la valeur comme ceci:
-Dfolder=Dev
Maintenant, je veux tester ma webapp sur Apache Tomcat, je dois donc définir/envoyer le dossier VM Argument.
Comment je fais ça?
Je dois utiliser setenv.sh? Comment?. Quelqu'un peut-il me donner un exemple?
Merci et désolé pour mon anglais
Je ne sais pas quelle version de Tomcat vous utilisez, mais dans Tomcat 7 dans le fichier catalina.sh vous pouvez spécifier la variable CATALINA_OPTS et cette variable passera à jvm.
Mais peut-être que définir une variable d'environnement n'est pas le meilleur moyen d'atteindre votre objectif. Le mieux sera peut-être de créer un fichier "app.properties" séparé, et de l'inclure dans applicationContext comme ceci:
<context:property-placeholder location="classpath*:app.properties" />
Et une solution pour catalina.sh
# CATALINA_OPTS (Optional) Java runtime options used when the "start",
# "run" or "debug" command is executed.
# Include here and not in Java_OPTS all options, that should
# only be used by Tomcat itself, not by the stop process,
# the version command etc.
# Examples are heap size, GC logging, JMX ports etc.
exemple:
CATALINA_OPTS = "- Dfolder = Dev"
MODIFIER:
pour Windows, cela devrait être quelque chose comme set CATALINA_OPTS="-Dfolder=Dev"
MODIFIER:
Dans la configuration Spring, vous pouvez utiliser la propriété système comme $ {propertyname}, et également inclure un fichier avec la définition de propriété, avec context:property-placeholder
, et toutes les propriétés définies dans ce fichier deviennent également disponibles dans la configuration.
Par exemple, vous avez des propriétés d'ensemble de base: config.properties et un ensemble de fichiers avec des paramètres de connexion db (DEV.properties, UAT.properties, PROD.properties). Alors, comment pouvez-vous inclure différentes propriétés pour différents environnements? Cela peut être fait de plusieurs façons, par exemple, définir les propriétés système dans catalina.bat
set CATALINA_OPTS="-Dbuild=DEV"
et dans applicationConfig.xml
<context:property-placeholder location="classpath*:${build}.properties, classpath*:config.properties" />
Ou vous pouvez créer une configuration de build différente et inclure dans WAR final une seule propriété (DEV, UAT, PROD) pour chaque configuration de build. Dans applicationConfig, définissez quelque chose comme:
<context:property-placeholder location="classpath*:*.properties" />
Accédez à $ CATALINA_HOME et modifiez setenv.sh
fichier en ajoutant les paramètres avec la valeur. Si vous souhaitez masser plusieurs paramètres, séparez-les à l'aide de space
Par exemple.
cd /opt/Tomcat/bin/
Sudo nano setenv.sh
modifier la ligne
CATALINA_OPTS="${CATALINA_OPTS}"
à
CATALINA_OPTS="${CATALINA_OPTS} -Dparam=value -Dparam2=value2"
redémarrez Tomcat:
service Tomcat restart
vous devriez maintenant pouvoir voir les arguments passés à Tomcat lorsque vous exécutez:
ps aux | grep Tomcat
Faites-le fonctionner dans Windows, en générant un fichier setenv.bat dans le même répertoire que catalina.bat et startup.bat (comme recommandé dans catalina.bat) et mettez le contenu du .bat:
set CATALINA_OPTS="-DyourVariableName=yourValue"
C'est tout. J'ai aimé cette façon car elle a l'air assez propre