2012-09-13 21 views
14

Ho un WebProject con un argomento VM chiamato "-Dfolder"Passo VM argomento di Apache Tomcat

uso questo argomento sulla applicationContext come questo:

<value>file:${FNET_CORE_CONFIG}/conf/${folder}/jdbc.properties</value> 

In Eclipse, per la prova, io uso "Run Configuration" per impostare il valore in questo modo:

-Dfolder=Dev 

ora, voglio mettere alla prova la mia webapp su Apache Tomcat quindi ho bisogno di impostare/inviare la cartella di VM argomento.

Come faccio?

Devo usare setenv.sh? Come?. Qualcuno può darmi ed esempio?

Grazie e scusa per il mio inglese

+1

Penso che dovresti provare a usare i parametri [ServletContext] (http://docs.oracle.com/javaee/5/api/javax/servlet/ServletContext.html), poiché è un progetto web. –

+0

Penso che questo non sia quello di cui ho bisogno. Devo impostare il valore su apache per WAR, non in sviluppo. Inoltre ho bisogno di cambiare il valore di volta in volta per l'ambiente Develop, Test e Demo. Grazie comunque –

+0

Ecco perché esiste il file web.xml. È un descrittore di implementazione, deliberatamente separato dal codice. – EJP

risposta

18

Non so quale versione di Tomcat voi utilizzando, ma in Tomcat 7 nel file di catalina.sh è possibile specificare CATALINA_OPTS variabili e questa variabile passerà alla JVM.

Ma forse impostare la variabile di ambiente non è il modo migliore per raggiungere il tuo obiettivo. Forse migliore sarà la creazione di file separato "app.properties", e includendolo nel applicationContext in questo modo:

<context:property-placeholder location="classpath*:app.properties" /> 

E soluzione per 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. 

esempio:

CATALINA_OPTS = "-Dfolder = Dev"

EDIT:

per le finestre che dovrebbe essere qualcosa di simile a set CATALINA_OPTS="-Dfolder=Dev"

EDIT:

Nella configurazione primavera è possibile utilizzare proprietà di sistema, proprio come $ {PropertyName}, e può anche includere il file con la definizione di proprietà, con context:property-placeholder, e tutte le proprietà definite in quel file diventano disponibili anche in configurazione.

Ad esempio, si dispone delle proprietà del set di base: config.properties e set di file con le impostazioni di connessione db (DEV.properties, UAT.properties, PROD.properties). Quindi, come puoi includere proprietà diverse per diversi ambienti? Esso può essere fatto che molti modi, ad esempio, impostare le proprietà del sistema in catalina.bat

set CATALINA_OPTS="-Dbuild=DEV" 

e in applicationConfig.xml

<context:property-placeholder location="classpath*:${build}.properties, classpath*:config.properties" /> 

Oppure si può creare configurazione di generazione diversa e includere nella guerra finale solo una proprietà (DEV, UAT, PROD) per ogni configurazione di build. In applicationConfig impostare qualcosa di simile:

<context:property-placeholder location="classpath*:*.properties" /> 
+0

Sto lavorando con Apache Tomcat 7. Sto usando VM Argument perché devo leggere una "parte" del percorso per Log4j.properties e JDBC.properties. Così provo con applicationContext e non riesco a farlo funzionare. Proverò la tua risposta in questo momento. grazie mille –

+0

Inoltre, sto lavorando con Windows. Devo usare catalina.sh o catalina.BAT? –

+0

Usi 'maven' o' ant' per costruire? Un'altra soluzione: crea diverse configurazioni di build per ambienti diversi e imposta tutte le proprietà necessarie nel processo di generazione. So che Jenkins consente di configurare facilmente questo. (Se si utilizza Jenkins come server CI) – user1516873

9

Vai a $ CATALINA_HOME e modificare setenv.sh file aggiungendo i parametri con il valore. Se si desidera massificare più parametri, separarli utilizzando space

E.g.

cd /opt/tomcat/bin/ 
sudo nano setenv.sh 

modificare la linea

CATALINA_OPTS="${CATALINA_OPTS}" 

a

CATALINA_OPTS="${CATALINA_OPTS} -Dparam=value -Dparam2=value2" 

Tomcat riavvio:

service tomcat restart 

si dovrebbe ora essere in grado di vedere gli argomenti passati al Tomcat quando si esegue :

ps aux | grep tomcat 
+2

Upvoting perché questo utente ha mostrato un esempio con più parametri. Sono abituato ad usare la GUI di configurazione di Tomcat e non è ovvio che i parametri siano delimitati da spazi. – Sebastian

0

ha reso il lavoro in Windows, generando un file setenv.bat nella stessa directory di catalina.bat e startup.bat (come consigliato in catalina.bat) e mettere nel contenuto del bat :

set CATALINA_OPTS="-DyourVariableName=yourValue" 

Questo è tutto. Mi è piaciuto in questo modo perché sembra abbastanza pulito

Problemi correlati