Inhabilitar la agrupación de servlets: procedimientos recomendados y consideraciones
Es posible que desee inhabilitar la agrupación de solicitudes y respuestas si la aplicación crea hebras dentro de la aplicación, o si está preocupado por el contenedor web que reutiliza los objetos de solicitud y respuesta.
Inhabilitar la agrupación de solicitudes y respuestas
- La aplicación está creando hebras en el interior de la misma.
La especificación del servlet 2.4 indica lo siguiente:
SRV.4.10 Vida útil del objeto de solicitud Cada objeto de solicitud sólo es válido dentro del ámbito de un método de servicio del servlet o dentro del ámbito de un método doFilter de un filtro. Generalmente, los contenedores reciclan objetos de solicitud para evitar la actividad general que supone la creación de objetos de solicitud y que puede afectar al rendimiento. El desarrollador debe tener en cuenta que no se recomienda mantener las referencias a objetos de solicitud fuera del ámbito descrito anteriormente ya que los resultados pueden ser imprevistos.
SRV.5.6 Vida útil del objeto de respuesta Cada objeto de respuesta sólo es válido dentro del ámbito de un método de servicio del servlet o dentro del ámbito de un método doFilter de un filtro. Generalmente, los contenedores reciclan objetos de respuesta para evitar la actividad general que supone la creación de objetos de respuesta que puede afectar al rendimiento. El desarrollador debe tener en cuenta que mantener mantener las referencias a objetos de respuesta fuera del ámbito descrito anteriormente puede dar lugar a un comportamiento imprevisible.
- Si le preocupa el contenedor web de los objetos reutilice los objetos de solicitud y respuesta. Dado que estos objetos se reutilizan, existe la posibilidad de que dos solicitudes de dos aplicaciones diferentes puedan acceder al mismo objeto de solicitud o respuesta como se describe en la sección relacionada con la seguridad de hebras del Servlet 2.4.
Seguridad de hebras SRV.2.3.3.3 No se garantiza que las implementaciones de los objetos de solicitud y respuesta sean seguros para hebras. Esto significa que sólo se deben utilizar dentro del ámbito de la hebra que maneja la solicitud.
Las referencias a los objetos de solicitud y respuesta no se deben proporcionar a los objetos que se ejecutan en otras hebras ya que es posible que el comportamiento resultante no se pueda determinar. Si la hebra creada mediante la aplicación utiliza los objetos gestionados por contenedor como, por ejemplo, el objeto de solicitud o respuesta, se debe acceder a estos objetos sólo durante el ciclo de vida de servicio del servlet y esta hebra, propiamente dicha, debe tener un ciclo de vida dentro del ciclo de vida del método de servicio del servlet, debido a que si se accede a estos objetos una vez finalizado el método de servicio pueden producirse problemas no determinados. Se ha de tener en cuenta que los objetos de solicitud y respuesta no so seguros para hebras. Si se accede a dichos objetos en varias hebras, el acceso se debe sincronizar o realizar mediante el envoltorio para mayor seguridad de las hebras, por ejemplo, se debe sincronizar la llamada de los métodos para acceder al atributo de solicitud o se debe utilizar una corriente de salida local para el objeto de respuesta dentro de una hebra.