servlet httpservlet example ejemplo java servlets

httpservlet - servlet java ejemplo



¿Es necesario cerrar la secuencia de entrada devuelta desde HttpServletRequest? (4)

El contenedor se encargará de esto. Siempre es un buen estilo de codificación para cerrar el recurso en el mismo lugar que lo asignó. (Me equivoqué en eso en mi publicación original. Pensé que habías abierto la secuencia. Debería leer con más cuidado).

Tengo un código de producción que hace algo como:

HttpServletRequest httpServletRequest ... DataInputStream dis = new DataInputStream(httpServletRequest.getInputStream())

Estas corrientes nunca se cierran explícitamente. Supongo que aquí el contenedor de servlets gestiona esto (JBOss Web). ¿Cuál es la forma correcta de manejar esto?


La especificación (hasta el candidato 3.0) no dice (por lo que puedo decir). En ausencia de información canónica, podría estar a merced de la implementación.

El código fuente para la implementación de referencia se menciona en la página de Sun Servlet :

La implementación de referencia se incluye en el SDK de Java EE 5 y también en el servidor de aplicaciones Java Platform, Enterprise Edition (Java EE) de código abierto, disponible a través del proyecto GlassFish, en java.net. El código fuente de implementación de referencia para la tecnología Servlet está disponible en el repositorio svn en java.net. Puede encontrar información adicional sobre todas las tecnologías de webtier en GlassFish en la página de GlassFish Webtier.

Verificar el comportamiento puede ser lo más cercano a una respuesta definitiva que obtendrás.


La regla del pulgar en E / S es que, si no abrió / creó la fuente de la corriente de entrada usted mismo , entonces no necesariamente tiene que cerrarla también. Aquí solo está envolviendo el flujo de entrada de la solicitud, por lo que no necesariamente tiene que cerrarlo.

Si abrió la entrada usted mismo mediante, por ejemplo, el new FileInputStream("c:/file.ext") , obviamente necesita cerrarlo usted mismo en el bloque finally. El contenedor debe hacerlo bajo el capó.


Usted absolutamente no debe cerrar estas corrientes usted mismo, ese es el trabajo del contenedor. Si lo hace, se arriesga manualmente a interferir con el ciclo de vida de la solicitud, y algunos contenedores pueden objetar violentamente que usted haga esto.