2010-01-19 10 views
9

Me preguntaba si alguien podría explicarme el modelo de subprocesos de Java Servlets? Según entendí al respecto, solo puede existir una instancia de un servlet en el contenedor de servlets y si hay múltiples hilos que están esperando ese servlet, las solicitudes se serializan de alguna manera. No sé cómo ocurre ese proceso de serialización ...Java Servlets subprocesamiento modelo

¿Alguien puede explicarlo?

Respuesta

11

Si las solicitudes fueron manejadas en serie por servlets, las aplicaciones web serían muy lentas. En realidad, los servlets necesitan ser seguros para la ejecución de subprocesos, ya que una sola instancia de un servlet puede ser responsable de manejar múltiples solicitudes simultáneamente.

Por lo general, un contenedor de aplicaciones web mantendrá un grupo de subprocesos para gestionar solicitudes, y las solicitudes entrantes se asignarán a subprocesos a pedido.

+0

Gracias de antemano por la respuesta danben! Pero tengo una cosa más para aclarar. Ser seguro para la ejecución de subprocesos significa que no se mantiene un estado interno en un servlet. Por lo tanto, cualquier instancia de servlet que se encuentre en la agrupación tiene el mismo estado en el que se crearon. ¿Estoy en lo correcto? Gracias! –

+2

Una clase sin estado interno es segura para subprocesos, pero no es la única manera de ser seguro para subprocesos. La seguridad de subprocesos en sí es una larga discusión, pero, por ejemplo, una clase con estado interno puede ser segura para subprocesos si serializa el acceso a su estado interno. – danben

+1

Los servlets también deben ser seguros para subprocesos porque comparten información de estado con otros servlets (objetos como los almacenados en ServletContext y HttpSession) –

1

Históricamente tenía dos modelos, según su Servlet. Si el Servlet implementó SingleThreadModel, las solicitudes se pusieron en cola. De lo contrario, y este es el único modelo ahora, un Servlet debe ser capaz de atender múltiples solicitudes al mismo tiempo. Por lo tanto, no hay cola en ese modelo, a menos que el contenedor tenga alguna funcionalidad que limite la velocidad.

0

sí, hay una interfaz hilo único modelo .it es una interfaz de marcador. hace que este objeto de servlet se sincronice, es decir, a la vez, solo un hilo sirve al objeto. Pero crea problemas como el retraso de respuesta. Para la solución, crean un conjunto de objetos pero el grupo también tiene un tamaño limitado. Así que es mejor usar bloque sincronizado