2015-05-28 24 views
7

Ho bisogno di aiuto per capire perché un paio delle mie applicazioni web generano in modo intermittente 404 errori durante il tentativo di creare un JSP. Uno di questi ha accesso diretto a JSP e l'altro ha un servlet che sta inoltrando a un JSP. Le pagine funzionano la maggior parte del tempo, ma occasionalmente generano un 404. Se l'utente aggiorna il proprio browser per 1-3 volte, la pagina riprende a funzionare senza alcuna modifica richiesta.Perché il mio server Tomcat genera 804 intermittenti durante la compilazione di JSP?

Ecco un esempio dell'errore come si vede nel browser web (Chrome): type: Status report message: /app_root/my_page.jsp description: The requested resource is not available

Il problema sembra essere correlato alla ricompilazione le pagine JSP. Il file .war e la cartella espansa non sono stati modificati. Ci sono sempre tre errori nei log che corrispondono a ogni errore 404: WARNING: Failed to delete generated class file [D:\Apache Software Foundation\Tomcat 7.0\work\Catalina\localhost\app_root\org\apache\jsp\my_005fpage_jsp.class] May 19, 2015 6:32:24 AM org.apache.jasper.compiler.Compiler removeGeneratedFiles WARNING: Failed to delete generated Java file [D:\Apache Software Foundation\Tomcat 7.0\work\Catalina\localhost\app_root\org\apache\jsp\my_005fpage_jsp.java] May 19, 2015 6:32:24 AM org.apache.jasper.compiler.Compiler generateJava WARNING: Failed to delete generated Java file [D:\Apache Software Foundation\Tomcat 7.0\work\Catalina\localhost\app_root\org\apache\jsp\my_005fpage_jsp.java]

Io corro Java 1.7 su Tomcat 7.0.53. Tomcat è in esecuzione su un server Windows 2008 R2.

Ecco cosa ho provato finora, in base alle informazioni che ho trovato da Google. Tuttavia, gli anni 404 continuano.

  1. Windows disattivato l'indicizzazione su tutta la directory di Tomcat
  2. spento modalità di sviluppo nel mio ambiente di produzione
  3. Aumento modificationTestInterval nel mio ambiente di QA da quello predefinito (4 secondi) al 3600 (1 ora) [Nota: è attualmente impostato su 0 per provare ad aiutarmi a riprodurre il problema]
  4. Modificato il proprietario nella directory di lavoro Tomcat come lo stesso id dell'ID in cui viene eseguito il servizio.

Sono in procinto di disattivare l'anti-virus nella directory di lavoro per vedere se questo aiuta.

Mentre questo problema si verifica sui miei server prod e QA, non si verifica per me sulla mia istanza Tomcat locale. In effetti, devo ancora vedere il problema dalla mia workstation anche quando eseguo le applicazioni QA e Prod. Il problema è stato visto solo da altre persone.

+0

Si è cercato di eliminare file di classe generata manualmente mentre si è connessi come un utente con cui Tomcat è in esecuzione? – Rajesh

+0

Ho appena provato a farlo manualmente. Ha funzionato fintanto che l'ho fatto con i privilegi di amministratore - aprendo cmd con i privilegi di amministratore o rispondendo al pop-up quando si cancellava attraverso Windows Explorer. – Spiritis

+0

La disattivazione della scansione antivirus non ha aiutato. Ulteriori test hanno rivelato che questo problema si verifica solo quando il servlet sta inoltrando al JSP. L'accesso al JSP funziona correttamente. Ho appena modificato la directory di lavoro per rendere esplicitamente il controllo completo dell'account del servizio Tomcat. Ciò mi consente di eliminare i file con quell'ID senza dover autorizzare l'accesso come amministratore. – Spiritis

risposta

2

Ho avuto lo stesso problema dopo aver distribuito uno .war sul nostro server live. Questi sono i passi che ho seguito per risolvere il problema:

1) spegnere il server Tomcat

2) Vai a <your tomcat directory> -> work -> Catalina -> localhost -> <your project> -> org -> apache -> jsp ->

3) eliminare manualmente sia .class e .java

4) Eliminare il file .war e la cartella schierato dal sito web che sta avendo il problema sulla cartella webapps.

5) Esporta un nuovo .war, e metterlo nella cartella webapps .

6) Avviare il servizio Tomcat di nuovo.

Una volta che il server ha terminato la distribuzione, rigenererà automaticamente i file eliminati nella directory "di lavoro" e il sito Web dovrebbe essere nuovamente disponibile senza l'errore 404 intermittente.

Spero che funzioni anche per te.

1

Verificare l'autorizzazione di questo file o cartella. Generalmente questo problema è causato dalla mancanza di accesso alle cartelle.

2

Il contenitore Tomcat memorizza nella cache i file .java e .class generati dal parser JSP, che vengono utilizzati dall'applicazione Web. A volte questi vengono corrotti o non possono essere trovati. Ciò potrebbe verificarsi dopo una patch o un aggiornamento che contiene modifiche a JSP.

soluzione è quella di eliminare semplicemente la directory di lavoro e riavviare il gatto