PDA

View Full Version : [Tomcat] problema con gli URL


Emmenem
02-01-2008, 08:16
Ciao a tutti,
volevo chiedervi se qualcuno di voi ha risolto un problema che mi sta dando molto fastidio.
Nella cartella "web-apps" di Tomcat ho una cartella con il nome "hello": l'applicazione "hello" è quindi raggiungibile all'URL http://localhost:8080/hello.
Il mio problema è il seguente: vorrei che "hello" fosse raggiungibile da due URL diverse e cioè:
1) http://localhost:8080/pippo/helloWorld
e
2) http://localhost:8080/pippo

è possibile senza duplicare cartelle in "web-apps"? Se si come?? Quali file di conf devo cambiare???
Grazie a chi mi risponderà :)

isAlreadyInUse
02-01-2008, 08:18
A che pro?
Per farla semplice puoi mettere una pagina che fa solo la redirect

Emmenem
02-01-2008, 08:39
Grazie della risposta.
Non c'è un modo senza redirect (agire solo sui file di configurazione di tomcat)?

isAlreadyInUse
02-01-2008, 08:40
Credo di si faccio un controllo e ti fo sapere

Emmenem
02-01-2008, 09:02
Di nuovo grazie, se si può fare mi leveresti una spina dal fianco!

texerasmo
02-01-2008, 09:28
puoi usare il modulo jk e fai fare questo lavoro ad apache.

Oppure prova a mettere un server-alias nel tuo server.xml

Emmenem
02-01-2008, 09:52
puoi usare il modulo jk e fai fare questo lavoro ad apache.

Oppure prova a mettere un server-alias nel tuo server.xml

Da quanto ho letto nella documentazione di Tomcat, l'elemento server-alias non è valido (ma lo è Alias sottoelemento di Host).
Tuttavia penso che non vada bene nel mio caso (riporto dalla documentazione di tomcat):

In many server environments, Network Administrators have configured more than one network name (in the Domain Name Service (DNS) server), that resolve to the IP address of the same server. Normally, each such network name would be configured as a separate Host element in conf/server.xml, each with its own set of web applications.

L'host è uno solo (cioè ho un solo network name), non mi serve aggiungere alias (altri network name) al file di configurazione.

Per quanto riguarda Apache e jk, utilizzo Tomcat anche come web server.
Altre idee?

kingv
02-01-2008, 18:32
Per quanto riguarda Apache e jk, utilizzo Tomcat anche come web server.
Altre idee?


devi mappare l'uri /pippo su hello o vuoi solo che a due uri corrisponda la stessa web app?

Emmenem
02-01-2008, 19:04
devi mappare l'uri /pippo su hello o vuoi solo che a due uri corrisponda la stessa web app?

Mi potresti spiegare entrambe le soluzioni (mi sfugge la sfumatura/differenza) ?
Grazie

kingv
03-01-2008, 09:18
Mi potresti spiegare entrambe le soluzioni (mi sfugge la sfumatura/differenza) ?
Grazie

forse sono io che non ho capito esattamente che cosa vuoi fare.
se hai una webapp e vuoi che sia raggiungibile da due url senza farne il deploy due volte puoi dichiarare due context dfferenti che puntano alla stessa directory.
mettiamo che la tua webapp sia contenuta in una directory "pippo" (che deve essere esterna alla dir "webapp", diciamo che è in \apache-tomcat\webapp2\pippo).
crea dentro \apache-tomcat\conf\Catalina\localhost due file pluto.xml e topolino.xml che contengono:
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="${catalina.home}/webapp2/pippo" >
</Context>
a questo punto dovresti avere la tua webapp esposta sia sulla url:
http://tuoserver/pluto
che su
http://tuoserver/topolino

e' quello che vuoi?

Emmenem
03-01-2008, 09:34
se hai una webapp e vuoi che sia raggiungibile da due url senza farne il deploy due volte puoi dichiarare due context dfferenti che puntano alla stessa directory.
...

http://tuoserver/pluto
che su
http://tuoserver/topolino



Grazie della risposta! Penso ci stiamo avvicinando alla soluzione.
Il mio problema è che mi servirebbe un url più articolato tipo:

http://tuoserver/topolino/helloWorld
e
http://tuoserver/topolino

che puntano alla stessa applicazione (nota che il nome della cartella è hello e l'url è helloWorld)
Si può fare?
Poi altra domanda: perché l'applicazione deve essere esterna alla cartella di default "webapp"?

[EDIT] Possibile risposta al primo quesito: basta rinominare il file in \apache-tomcat\conf\Catalina\localhost\ come
topolino#helloWorld.xml e topolino.xml
ed entrambi hanno


<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="${catalina.home}/webapp2/pippo" >
</Context>


in modo tale da raggiungere l'applicazione usando

http://tuoserver/topolino/helloWorld
e
http://tuoserver/topolino

Il quesito due rimane (perché webapp2 e non webapp?).
Ti/Vi prego correggetemi se sbaglio.

kingv
03-01-2008, 09:44
webapp è di default la server root e non puoi definire altri contesti lì dentro, che io sappia.

Emmenem
03-01-2008, 09:49
webapp è di default la server root e non puoi definire altri contesti lì dentro, che io sappia.

Scusa è corretto quando dico:

Possibile risposta al primo quesito: basta rinominare il file in \apache-tomcat\conf\Catalina\localhost\ come
topolino#helloWorld.xml e topolino.xml
ed entrambi hanno
http://tuoserver/topolino/helloWorld
e
http://tuoserver/topolino

kingv
03-01-2008, 11:55
sì non ho scritto nulla perchè è corretto.

Emmenem
04-01-2008, 08:51
webapp è di default la server root e non puoi definire altri contesti lì dentro, che io sappia.

Ok in CATALINA_HOME/conf/localhost/ ho un file di nome pippo.xml del genere

<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="${catalina.home}/webapp2/hello" >
</Context>

Ma all'avvio di tomcat mi compare l'errore:

Document base c:\apache tomcat\webapps\pippo does not exist or is not a readable directory

Qualche idea??

kingv
04-01-2008, 09:37
la server root la definisci nel server.xml ma cambiandola non risolvi nulla.
i contesti li puoi definire solo fuori dalla server root (e' indicato nella documentazione). qual e' il problema?

kingv
04-01-2008, 09:44
Ok in CATALINA_HOME/conf/localhost/ ho un file di nome pippo.xml del genere


l'hai messo in conf/Catalina/localhost ?

ho fatto una prova sul mio tomcat (v 5.5) e funziona.

Emmenem
04-01-2008, 10:01
l'hai messo in conf/Catalina/localhost ?

Si prima ho sbagliato a digitare il path :)

ho fatto una prova sul mio tomcat (v 5.5) e funziona.

No non dirmi così!! Io sto provando ma non funziona!
Allora ricapitolando:
in D:\Apache-Tomcat\apache-tomcat-5.5.25\conf\Catalina\localhost\pippo.xml
che contiene:

<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="D:\Apache-Tomcat\apache-tomcat-5.5.25\webapps2\sample" >
</Context>
dove sample è una directory che contiene un'applicazione semplice.

La cartella D:\Apache-Tomcat\apache-tomcat-5.5.25\webapps l'ho lasciata così come era (non ho creato alcuna directory).

Quando avvio tomcat (vers. 5.5 anche la mia) mi compare l'errore:

A docBase D:\Apache-Tomcat\apache-tomcat-5.5.25\webapps2\sample inside the host appBase has been specified, and will be ignored

e

Document base D:\Apache-Tomcat\apache-tomcat-5.5.25\webapps\pippo does not exist or is not a readable directory
Perché mi richiede la presenza di una dir di nome pippo (come il file pippo.xml) in webapps?

[EDIT]: RISOLTO!
Il problema era che la directory webapps2 va rinominata in qualcosa tipo abc.

Grazie a chi mi ha aiutato (un ringraziamento speciale a kingv :) ).