Tomcat 7: problema alla barra finale con webapps


13

Di recente ho aggiornato il mio server Tomcat dalla versione 6.x alla versione 7.x più recente.

Ho avuto piccoli problemi, sperando di ottenere aiuto.

Ho un'applicazione che chiama MyApp

Su tomcat6, quando sono andato su http://www.example.com/MyApp/page/ di solito ottenevo il risultato desiderato.

Ora, su tomcat7, visitando lo stesso URL esatto (con la barra finale) sto ricevendo l'errore: "La risorsa non è disponibile", poiché il tomcat pensa che / MyApp / page / sia un nome intero webapp invece di essere nomi di richieste pagina nella webapp MyApp.

Ho bisogno della barra alla fine sul mio url perché altrimenti ricevo l'errore: "Stato HTTP 405 - Metodo di richiesta 'GET' non supportato" che è OK perché in realtà non ho permesso il metodo GET alla richiesta "page" .

Se qualcuno sa come dire a Tomcat che la barra finale dopo il percorso della webapp esistente non dovrebbe supporre di reindirizzarla a una nuova webapp chiama l'intera "stringa" ed elabora semplicemente la richiesta come su Tomcat6, sarebbe fantastico!


Esiste un servlet predefinito nel web.xmlquale è mappato /*? Altrimenti tomcat utilizza un elenco di file di benvenuto. Normalmente solo il primo segmento di percorso viene interpretato come root di contesto. Quindi non trovare il tuo webapp non sembra essere il problema.
mana,

il primo segmento di percorso è un root di contesto e funziona davvero, lo trova, ma i seguenti percorsi invece di far parte del primo percorso, il tomcat cerca webapp con tutto il percorso .. Non ho nulla che sia configurato è non predefinito ..

Non capisco davvero quello che stai dicendo. Scusa. Se si dispone di una webapp configurata con il nome, MyAppTomcat utilizzerà questo contesto dell'applicazione Web utilizzando il percorso rimanente page/. In caso contrario, cercherà il ROOTcontesto, utilizzando il percorso completo per una ricerca.
mana,

Ho una webapp che chiama MyApp e example.com/MyApp funziona, ma quando si visita example.com/MyApp/foo invece di cercare contenuti foo all'interno di MyApp, cerca una webapp che chiama "MyApp / foo /" e non cerca il contenuto in MyApp chiama foo ..

Risposte:


1

Antica domanda, ma da quando ho recentemente combattuto con la barra di chiusura in Tomcat 8, so che i problemi con la barra continuano ad affliggere il mondo degli utenti Tomcat. :-)

Ciò che potresti incontrare è il modo in cui Tomcat gestisce i reindirizzamenti durante il caricamento del contesto principale. Dai un'occhiata al bug 58660 e leggi alcune delle discussioni degli sviluppatori lì. Potrebbe essere necessario disattivare il mappatore predefinito modificando l' mapperContextRootRedirectEnabledattributo Contextdell'elemento in conf/context.xml.


0

Controlla la tua lista dei file di benvenuto. Quella che segue è la speculazione ...

Credo che l'essenza del problema sia quando Tomcat viene presentato con un / - Ha alcune opzioni - Iterate sull'elenco dei file di benvenuto - In assenza di nulla - mostra l'elenco delle directory (se abilitato)

Ecco dove inizia il divertimento ... Molte persone vogliono usare * .do per cose come i montanti. Quindi vogliono che index.do sia la home page. O anche comune è index.jsp dove * .jsp è mappato su JspServlet.

Ecco dove le cose si divertono. Supponiamo quindi che i tuoi file di benvenuto siano index.jsp, index.do.

Quello che Tomcat (IIRC) sta facendo è prima di tutto scorrere l'elenco dei file di benvenuto alla ricerca di risorse con quel nome.

Quindi eseguirà un secondo passaggio alla ricerca di mappature corrispondenti. Quindi se index.jsp è specificato nella lista di benvenuto e * .jsp è mappato. Quindi Tomcat proverà a inoltrare a index.jsp e otterrai un 404.

Quindi ho intenzione di indovinare che hai una mappatura servlet e sovrapposizione di file di benvenuto. E il comportamento di quel servlet non supporta GET. (Da qui il 405)


0

Se il tuo progetto utilizza un modulo web dinamico di v2.2, devi creare esplicitamente almeno un file (può essere un file html vuoto) presente in web.xml (es: index.html) nel tuo WebContent.


1
questo è un commento; non una risposta; ti preghiamo di considerare di commentare in futuro quando otterrai più punti. grazie
Hrvoje Špoljar,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.