2011-01-19 17 views
15

Vorrei impacchettare le mie classi Web (fagioli, filtri, servlet) in jar e inserirle nella directory /WEB-INF/lib/ insieme ad altri jar di utilità e ad abbandonare la directory /WEB-INF/classes/ totalmente./WEB-INF/classi vs/WEB-INF/lib

Ci sono differenze sostanziali tra i due in termini di caricamento di classi, contesto applicativo di adesione, ecc.?

Grazie.

PS: Ogni volta che googlando una qualsiasi delle specifiche java, sono sempre reindirizzato all'indice della documentazione Oracle che è a una dozzina di clic dall'URL originale. Qualcuno sa cosa sta succedendo lì?

risposta

19

Vorrei andare per /WEB-INF/classes. Ti consente di eseguire l'applicazione in modalità di debug e le classi hot-swap in modifica. Se impacchettate tutto come un barattolo, dovreste riconfezionare e ridistribuire l'app ogni volta che cambiate una classe.

+0

grazie. Ma, a parte il debug, sarà funzionalmente la stessa app? – Osw

+1

sì. Nessuna differenza – Bozho

14

Beh, poco: Immaginate di avere classe org.example.Test.class, se lo metti in vaso e in WEB-INF/lib/ directory, e copiare la stessa classe in WEB-INF/classes/ allora classloader di tale domanda utilizzerà ultimo (da WEB-INF/classes/).

A volte è possibile utilizzarlo come vantaggio - Ho una libreria, e ha un bug ... Cerco l'origine di quella classe (dove bug è, mi manca la parte di come so che bug è in quel classe, questa è un'altra storia), aggiungo quella classe al progetto con codice fisso, ed è compilata in WEB-INF/classes/ mentre la libreria esiste ancora in WEB-INF/lib/. La classe fissa verrà utilizzata fino a quando la libreria verrà riparata.

+0

Grazie, questa funzione potrebbe essere utile. – Osw

+0

Consiglio utile, grazie! – aglassman

0

Nella definizione del contenitore Servlet Tomcat: WEB-INF\classes viene cercata prima WEB-INF\lib. Puoi scegliere di delegare il tuo caricamento di classe al tuo classloader personalizzato, anche se l'ordine di cui sopra viene mantenuto.

Se si sceglie di andare con un altro fornitore, ad es. JBOss, Glassfish, Jetty potrebbe avere un ordine diverso, ma non ne sono sicuro.