Newsgroup: it.comp.java
Titolo: Tomcat e directory root

ciao, mi sto incavolando con Tomcat e volevo chiedere il vostro parere.
Ho definito una una web application (nel senso delle servlet 2.2) anzi, 
ho creato semplicemente una directory sotto webapps e all'avvio di 
tomacat questa viene regolarmente individuata e creato un contesto.
All'interno della pagina di avvio se mi riferisco ad un qualcosa tipo
/mia_sottodir/mio_file_html questo viene tradotto come se fosse il 
contesto di root e quindi tomcat cerca /ROOT/mia_sottodir/mio_file.html
mentre io mi aspetterei che, visto che la pagina iniziale sta in un 
certo contesto, ogni volta che scrivo '/' questa venga presa come radice 
di _quel_ contesto. Notare che questo lo fa anche se definisco 
esplicitamente un contesto nel file server.xml
Qualcuno mi sa aiutare?
Marco



Ciao, forse non ho capito benissimo il tuo problema, ma:
se hai definito un contesto come segue
        <Context path="/test" 
                 docBase="pippo/pluto" 
                 crossContext="false"
                 debug="9" 
                 reloadable="true" > 
        </Context>	
e chiami la pagina 
http://tomcahost/test/pagina.html
, tutti i
riferimenti dentro pagina.html devono mantenere l'URI /test oppure
riferire le altre pagine senza lo / iniziale ovvero o usi
/test/sottodir/pagina2.html oppure sottodir/pagina2.html. 
Altrimenti se chiami /sottodir/pagina2.html è normale che tomcat
ridiriga la richiesta al contesto corrispondente alla directory
virtuale "/".
Spero di averti aiutato.
Umberto

 virtuale "/".
Ciao Umberto, si hai capito il problema e sono daccordo con te, il mio 
problema era che stavo facendo il porting di una applicazione da JRun 
(che non conosco) a Tomcat e, siccome nelle pagine originali, i link 
erano tutti del tipo '/...', cercavo un modo di evitarmi un poderoso 
'search & replace' forzando la mano a Tomcat ma in effetti volevo una 
cosa contro le specifiche 'servlet 2.2'
A questo punto mi chiedo: se in JRUN funzionava, era perchè era messa 
come applicazione 'root' o perchè jrun non è compatibile servlet 2.2?
Che ne pensi?
ciao
Marco


Ciao,
non  ho mai usato Jrun, ma probabilmente la tua applicazione era
configurata come root.
Non penso che Jrun ignori le indicazioni riguardanti il
ServletContext.
Per quanto riguarda le soluzioni da adottare, devi scegliere la
migliore tra le due:
- applicazione come root (non elegante)
- search/replace (con un buon editor (vedi Ultraedit), potrebbe essere
molto veloce)
Questo insegna come il disegno di pagine in accordo alle specifiche
J2EE (e quindi in stile "web application") faciliti eventuali porting
e modifiche del contesto. Le pagine dovrebbero essere sempre
indipendenti dal contesto.
Umberto

 indipendenti dal contesto.
Ok, quindi dici che i link non dovrebbero mai contenere il contesto, ma solo dei riferimenti relativi?
Se ho una struttura tipo
webapps/mycontext/jsp       e
webapps/mycontext/img
in una pagina (jsp), che sta nella dir jsp, se voglio mantenermi 
indipendente dal contesto e voglio riferire una immagine devo usare
<IMG SRC="../img/sfondo.jpg"
anzichè
<IMG SRC="mycontext/img/sfondo.jpg"
o
<IMG SRC="/img/sfondo.jpg"   (perchè mi riferirei ovviamente a ROOT)
E' questo che intendi?
ciao
Marco


intendo che secondo le specifiche J2EE una "web application" è
indipendente dal contesto in cui viene lanciata, ovvero dovrebbe
essere tutta inclusa in un file .WAR, con una struttura di directory
ben definita (WEB-INF, ecc), una serie di file descrittivi (web.xml
ecc.) e riferimenti RELATIVI agli oggetti statici (gif, jsp, html
ecc.). 
L'associazione web-application-context viene fatta infatti fuori dal
fle .WAR (in tomcat nel file servlet.xml).
Una struttura di questo genere è quindi trasportabile su qualsiasi
server conforme J2EE e applicabile a qualsiasi contesto (che non
essendo conosciuto a priori non può ovviamente essere riferito nelle
pagine o nelle servlet).
Io usualmente metto la directory delle immagini allo stesso livello
delle pagine jsp, per cui dentro una pagina posso riferire le immagini
come images/pippo.gif.
Ciao,
Umberto