2012-11-02 13 views

risposta

16

Le voci dell'ambiente sono disponibili tramite JNDI che può essere utile quando non si dispone di ServletContext direttamente con le mani, ad esempio in EJBs. Quello nel web.xml è in realtà l'ultimo in catena di precedenza per quanto riguarda le voci di ambiente di overridding. Di solito vengono definiti nella configurazione del server. Pertanto, se si intende eseguire l'override di una voce di ambiente specificata dal server dalla webapp, è possibile farlo tramite web.xml.

I parametri di contesto sono specifici per la webapp stessa. Sono disponibili solo quando si dispone di un ServletContext direttamente a mani, di solito solo all'interno di filters, servlets (e intrinsecamente anche JSPs tramite ${initParam.someName} in EL) e listeners. Dovrebbero essere usati per fornire i parametri di configurazione per filtri, servlet e/o listener in esecuzione nella webapplication. Non avrebbe molto senso fornirli da JNDI, che è un processo complicato per lo scopo semplice.

+0

Sono ancora confuso. Supponiamo di voler memorizzare i dettagli della mia connessione al database, ad esempio? Cosa dovrei usare da questi 2? Ho intenzione di installare la mia app più di una volta sullo stesso Tomcat. – Wouter

+0

@Wouter Le voci dell'ambiente hanno un ambito più ampio, disponibile per tutte le applicazioni Web in esecuzione su tale Tomcat. Un "contesto" è una singola app Web, che esegue il mapping su un singolo [file WAR] (https://en.wikipedia.org/wiki/WAR_%28Sun_file_format%29). Quindi se il tuo database serve solo una singola web app, fallo al livello Context. Un modo per farlo è scrivere un tag ' ...' nel file 'context.xml' nella cartella' META-INF' della tua app web. Per quanto riguarda la tua menzione di "installare la mia app più di una volta sullo stesso Tomcat", non capisco, non ha senso. –

+0

@BalusC Il tuo primo paragrafo non è abbastanza chiaro. Se intendi dire che le voci di ambiente hanno un ambito più ampio rispetto ai parametri di contesto, piuttosto che dirlo in modo più esplicito. Forse citare [il documento Tomcat] (https://tomcat.apache.org/tomcat-8.0-doc/config/globalresources.html#Environment_Entries): "visibile a tutte le applicazioni web" –