Ogni richiesta HTTP accede allo stesso oggetto servlet ma in un thread diverso? o crea un nuovo thread e una nuova istanza Servlet?Ogni richiesta accede allo stesso oggetto servlet?
risposta
Il contenitore utilizzerà la stessa istanza servlet se il servlet non implementa SingleThreadModel
. Altrimenti non è garantito che lo stesso oggetto Servlet
venga colpito. Il contenitore è libero di creare più istanze di servlet se lo ritiene necessario. Ma le richieste arrivano su fili diversi, non necessariamente creati di recente (come ha detto Sanjay).
Dalla specifica Servlet 3.0:
Per un servlet non ospitati in un ambiente distribuito (impostazione predefinita), il contenitore di servlet deve utilizzare una sola istanza per dichiarazione servlet. Tuttavia, per un servlet che implementa l'interfaccia SingleThreadModel, il contenitore servlet può istanziare più istanze per gestire un carico di richieste pesanti e serializzare le richieste in una particolare istanza.
...
Generalmente il contenitore Web gestisce richieste simultanee alla stessa servlet di esecuzione simultanea del metodo del servizio su diversi thread.
Ogni richiesta HTTP crea un nuovo thread ma accede alla stessa istanza del Servlet.
MODIFICA: in caso di un nodo server, si avrà la stessa istanza Servlet su quel nodo. In caso di bilanciamento del carico/molti server di solito si dispone di un'istanza per Java VM.
Sono abbastanza sicuro che non sia realmente * crea * un nuovo thread sempre; più simile preleva un thread gratuito da un pool di thread esistente. –
@ SanjayT.Sharma Hai ragione, è spesso fatto in questo modo (per motivi di prestazioni), ma questo è il dettaglio dell'implementazione del server applicazioni/servlet e il tuo codice non dovrebbe dipendere da quello –
- 1. jQuery - oggetto e funzione allo stesso tempo?
- 2. Ruby on Rails Più richiesta HTTP allo stesso tempo?
- 3. Richiesta di più valori dal grafico allo stesso tempo
- 4. R assegnare più elementi di lista allo stesso oggetto
- 5. Servlet Java e JSP che accedono allo stesso bean di sessione
- 6. Evitare più riferimenti allo stesso oggetto in Django ORM
- 7. Confronto tra variabili che puntano allo stesso oggetto intero
- 8. Quando i puntatori allo stesso oggetto sono uguali?
- 9. Chiamate ajax multiple allo stesso tempo
- 10. oggetto a caso per ogni richiesta di pagina con SilverStripe
- 11. Richiesta dell'URL in un servlet
- 12. Riferimenti non risolti allo stesso database Progetto
- 13. Invio di due o più moduli allo stesso servlet in JSP
- 14. Ajax più richieste allo stesso tempo
- 15. Più console allo stesso tempo
- 16. Lettura FromUri e FromBody allo stesso tempo
- 17. Sostituire 2 stringhe allo stesso tempo?
- 18. In Ruby, perché Array.new (dimensione, oggetto) crea una matrice costituita da più riferimenti allo stesso oggetto?
- 19. È sicuro reindirizzare allo stesso URL?
- 20. Postback asincroni multipli allo stesso tempo - ASP.NET
- 21. Transazioni multiple PayPal allo stesso tempo
- 22. stampa più interi contemporaneamente allo stesso tempo
- 23. facendo numerosi puntatori NULL allo stesso tempo
- 24. più chiavi esterne allo stesso tavolo
- 25. più segui allo stesso controller di visualizzazione
- 26. Un contenitore di servlet dovrebbe creare una nuova istanza javax.servlet.http.HttpServlet per ogni richiesta in entrata?
- 27. Android: registrazione e streaming allo stesso tempo
- 28. Android/Java: accesso allo stesso oggetto SQLite DB da più attività
- 29. Unità di persistenza JPA multiple che puntano allo stesso database?
- 30. Utilizzo vibrazione e AVCaptureSession allo stesso tempo
Perché non istanziare un servlet su richiesta? –
possibile duplicato di [Come funzionano le servlet? Istanziazione, variabili di sessione e multithreading] (http://stackoverflow.com/questions/3106452/how-do-servlets-work-instantiation-session-variables-and-multithreading) – BalusC