2012-09-27 3 views
8

Appena spostato da Tomcat 6 a Tomcat 7 e notato che quando si distribuisce una webapp chiamata widget META-INF/context. xml non viene più copiato in conf/Catalina/localhost/widget.xml.In Tomcat 7 è necessario copiare context.xml in conf/Catalina/locahost affinché abbia effetto

Cosa Im poco chiaro è se ha bisogno di essere, saranno le impostazioni in context.xml essere usato se lasciato in META-INF o hanno effetto solo se spostato in conf/Catalina/localhost/widget.xml

Im usando un gatto di vaniglia 7 installazione

risposta

10

Vedere il documentation (il corsivo è mio):

elementi di contesto individuali possono essere definiti in modo esplicito:

  • In un singolo file a /META-INF/context.xml all'interno dei file dell'applicazione . Facoltativamente (in base all'attributo copyXML dell'host) questo può essere copiato in $CATALINA_BASE/conf/[enginename]/[hostname]/ e rinominato in nome file di base dell'applicazione più un'estensione ".xml".

La documentazione per Host ha questo da dire su copyXML:

Impostare su true se si desidera un descrittore di contesto XML incorporato all'interno del applicazione (che si trova a /META-INF/context.xml) da copiare xmlBase quando l'applicazione viene distribuita. All'avvio successivo, il descrittore XML del contesto copiato verrà utilizzato preferibilmente a qualsiasi descrittore XML di contesto incorporato nell'applicazione anche se il descrittore incorporato nell'applicazione è più recente. Il valore della bandiera è impostato su false. Nota se deployXML è falso, questo attributo non ha alcun effetto.

+0

Avrei dovuto dire che Ive ha già guardato questo e notato l'attributo copyXML, ma questo non risponde alla mia domanda. Per reiterare se ho appena lasciato il context.xml in META-INF viene usato, o ha effetto solo se viene rinominato e copiato in $ CATALINA_BASE/conf/[nomemile]/[nomehost]/ –

+0

Sì, sì. Dice subito prima della parte che ho citato "Gli elementi di contesto individuale possono essere definiti in modo esplicito:". Se può "essere definito in un singolo file su /META-INF/context.xml", ovviamente Tomcat lo rileverà.La copia sotto $ CATALINA_BASE/conf è solo così puoi vedere tutte le configurazioni raggruppate nello stesso posto. Inoltre, non ci provi? –

+0

Più documentazione: copyXML è in realtà utilizzato per eseguire il bootstrap della configurazione in $ CATALINA_BASE/conf, che è quella utilizzata nei successivi riavvii. –

1

Come ho capito, il context.xml in META-INF viene utilizzato a meno che l'elemento deployXML sia impostato su false. Nota da Tomcat 7 docs, il valore predefinito è true a meno che non sia abilitato un gestore sicurezza!

Tuttavia, dalla documentazione, ho avuto l'impressione che impostando l'attributo copyXML nel context.xml stesso (senza toccare server.xml) causerebbe il file da copiare conf:

<Context antiJARLocking="true" path="/widget" copyXML="true" /> 

Tuttavia, utilizzando Tomcat 7, sembra che il file non venga copiato in conf a meno che lo copyXML sia impostato su true sul come Frank ha risposto sopra.