Newsgroup: it.comp.java
Titolo: Thread java in Tomcat

Salve a tutti,
ho la necessità di avviare un programma java (un thread) all'avvio di
Tomcat. Prima ancora che venga richiesta una pagina jsp.
E' possibile?
Ciao,
CC

 ha scritto nel messaggio
news:c8hnik$gq0$1...@lacerta.tiscalinet.it...

Si,
1) Creati il thread
2) Crea una servlet di startup nella tua webapp
3) Nella init della servlet di startup lancia il thread
4) Se il thread è un demone, nel senso che è un while(true) sostanzialmente,
nella destroy della servlet interrompi il thread
Hint:se il thread è un demone attento alla sua interruzione.
-- 
Ciao e buon lavoro,
   Renato
---- 
Renato Eschini
    Inera srl
    Via Vespucci 41
    56100 Pisa
    Tel:         (+39) (0)50 2201218
    WWW:         
http://www.inera.it

> 2) Crea una servlet di startup nella tua webapp
Sai dove potrei torvare qualche info a riguardo?
Grazie per l'aiuto.
CC

 ha scritto nel messaggio
news:c8hr4k$lc9$1...@lacerta.tiscalinet.it...

Cerca load-on-startup su google.
E' il tag che va nella dichiarazione della servlet nel web.xml, dice al
container che quella servlet va istanziata allo startup della webapp


 container che quella servlet va istanziata allo startup della webapp
Grazi,
sei stato prezioso.
CC

 
Secondo me sarebbe meglio usare un ServletContextListener, che serve
proprio a quello e non dipende dal particolare Web Container (Tomacat).
-- 
Lucio Benfante
Java User Group Padova: 
http://www.jugpadova.it
Brainbench MVP for Java 1: 
http://www.brainbench.com
MyTranscript: 
http://www.brainbench.com/transcript.jsp?pid=167064

 E' possibile?
ServletContextListener ha un evento all'avvio della webapp.

 1) Creati il thread
ma e' lecito crearsi thread da una servlet tomcat?
pensavo di no! (ma non saprei dire perche')
bye
Touch

 ha scritto nel messaggio
news:c91lte$55d$1...@serv1.iunet.it...


 A te la parola .....;)
rispondo anche privatamente perche' mi ero completamente di menticato di 
questo post che e' di maggio e lo vedo solo ora che siamo ad ottobre
riguardo allo startup sono d'accordo con l'uso del listener
la mia domanda deriva piu' che altro da dover eseguire compiti 
"asincroni". cioe' il browser esegue una query, la webapp restituisce 
una pagina di attesa (magari con un pulsante "refresh" per sapere a che 
punto stanno le cose) e nel frattempo continua il suo lavoro.
poiche' la servlet una volta generata la pagina restituisce il controllo 
al container, e' necessario un thread che continui il lavoro. a questo 
punto avro' un pool di thread.
in realta' suppongo che la soluzione "vera" al problema sia JMS ma devo 
ancora studiarlo.
il fatto e' che un servlet container ha gia' il suo pool di workers 
(sono quelli che eseguono il codice della servlet poi) e potrebbe fare 
assunzioni di vario tipo sul classloader di questi, e eventuali thread 
creati invece dal codice della servlet potrebbero non essere 
correttamente inizializzati per operare sugli oggetti del servlet 
container (tipo HttpSession).
sono quasi sicuro che Weblogic abbia controindicazioni sulla creazione 
di thread o ponga dei limiti su quello che questi possano fare, tomcat o 
altri non saprei. da qui la domanda.
ciao
Simone


il punto e' che la servlet viene invocata tramite doservice/doget/dopost dal
servlet container ( ad esempio tomcat).
1. la memoria e in generale l'intero processo e' sotto il controllo del
container, che in teoria puo' disttruggerlo e dovrebbe distruggere i thread
che genera allo scadere della session.
2. Se sei asd esempio in balancing o tolerance risponde a caso uno dei
container, e generare un thread non e' una operazione granche corretta a
quel punto.
Le 2 strade suggerite dagli altri sono corrette perche la servlet a quel
punto la puoi vedere come una specie di plugin del container e si avvia su
tutte le sue eventuali istanze e non e' legata ad una session.
Nicola
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/