|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Jul 2006
Messaggi: 152
|
[Java] Risposta immediata Servlet
Dovrei scrivere una servlet Java che quando riceve una richiesta , risponda subito con una risposta NULL (nel senso che non mi interessa il contenuto della risposta) al client, pero' poi continui a fare altre cose (scrittura su DB).
Devo creare a mano un thread che gestisca la scrittura su DB , mentre nell'altro flusso torno null ? |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7249
|
Quote:
comunque il dialogo servlet/DB è diretto? |
|
![]() |
![]() |
![]() |
#3 |
Junior Member
Iscritto dal: Jul 2006
Messaggi: 152
|
No , appunto, mi serve proprio ritornare subito NULL perche' non mi interessa l'esito della scrittura sul DB (sia che vada bene sia che fallisca) , l'importante e' che la risposta della servlet sia IMMEDIATA per non far attendere troppo.
Il colloquio servlet/db e' diretto. Cmq la soluzione e' col thread ? |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7249
|
Quote:
se puoi evitare i thread evitali, altrimenti se proprio devi usali ![]() |
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Come sarebbe "se puoi evitare i Thread evitali"
![]() I Thread sono nostri amici, usali. Sì, la soluzione è un meccanismo di scrittura asincrono. Crei un oggetto Pippo che accetta una richiesta di scrittura e processa quella richiesta in un Thread diverso da quello che l'ha inviata. La tua servlet altro non farà che dire: ilPippo.scrivi(qualcosa); rispondi NULL; Essendo asincrono, scrivi restituirà immediatamente il controllo. Per la concreta esecuzione del compito affidatogli, Pippo può usare una coda di consumazione. E' molto semplice ed efficace.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 7249
|
Quote:
rispondi(NULL); scrivi(qualcosa); io non complicherei ulteriormente usando i thread.. in fondo se a lui non interessa sapere se la scrittura è andata a buon fine può benissimo farla dopo la risposta. inoltre non perde nemmeno tempo perchè rispondi(NULL) credo che non si porti via molto tempo ![]() cioè se è possibile fare in questo modo io non userei un thread in pratica. se invece rispondi corrisponde a una return e per cui non si può eseguire qualcosa dopo, allora il discorso è diverso ed è necessario usare un thread. |
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Bisognerebbe accordarsi sul termine complicazione. Un consumatore concorrente in Java è roba di venti righe. Per la servlet, scrivi(qualcosa) era e scrivi(qualcosa) rimane.
Considerando poi che la stessa istanza della Servlet gestisce le richieste di più client, scrivere prima di rispondere o rispondere prima di scrivere non cambia i termini del problema. Rispondere prima renderà immediata solo la prima richiesta.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:38.