Sto costruendo un'applicazione web relativamente semplice in cui il servlet principale implementa l'interfaccia ServletContextListener
per determinare se il contesto è stato avviato o arrestato. Ho implementato i miei metodi contextInitialized
, contextDestroyed
, init
e destroy
(entrambi init
e destroy
chiamare super
nella classe base). Al momento non ho implementato alcuna funzionalità reale oltre a quella che ho inizializzato log4j nel metodo contextInitialized
dove carico il file log4j.properties
.Tomcat non si chiude in Eclipse
Quando avvio e fermo il server Tomcat da Eclipse, tuttavia, tutto viene chiamato nell'ordine corretto (sto usando alcuni System.out.println
per testarlo) ma dopo circa 10 secondi di arresto del server mi viene presentato con un popup di Eclipse che indica quanto segue:
Server Tomcat v6.0 Server su localhost non risponde. Vuoi terminare questo server? Fare clic su OK per terminare il server o fare clic su Annulla per continuare ad attendere.
Questo è ciò che è stampato nella mia console Eclipse quando mi fermo Server:
04/01/2010 7:39:13 PM org.apache.catalina.core.StandardService fermare
INFO : Arresto del servizio Catalina
contextDestroyed
04/01/2010 19:39:13 org.apache.coyote.http11.Http11Protocol distruggere
INFORMAZIONI: Arresto Coyote HTTP/1.1 su http-8080
E dopo l'ultimo messaggio INFO
si blocca lì finché non viene visualizzato il popup. Se scelgo di aspettare, premere Annulla, Eclipse diventa inutilizzabile e devo eliminare il processo Eclipse da un terminale.
Qualsiasi input su come risolvere questo problema sarebbe molto apprezzato.
UPDATE:
Il problema è stato causato da un filo non demone che sto iniziando nel mio metodo init
(dimenticato di dire che :). Il problema è stato risolto interrompendo esplicitamente il thread con il metodo stop
, anche se tale metodo sembra essere deprecato.
Sto davvero la prima persona a utilizzare il tag 'servlet'?!? – Luke
'servlet' è il tag più comune, a quanto pare. :) – ZoogieZork
Penso che questo avvenga non solo all'interno di eclissi, ma in generale. Per quanto ricordo è stato un problema con le risorse log4j, google con questo in mente. – Bozho