¿Por qué está obsoleto javax.servlet.SingleThreadModel
?¿Por qué (javax.servlet.) SingleThreadModel está en desuso?
Respuesta
El javadoc dice por qué. SingleThreadModel
fue diseñado para ser una solución fácil a la concurrencia de carga baja, pero no siquiera logramos que:
Tenga en cuenta que no SingleThreadModel resolver todos los problemas de seguridad hilo. Para el ejemplo , aún se puede acceder a atributos de sesión y variables estáticas mediante solicitudes múltiples en varios subprocesos al mismo tiempo, incluso cuando se usan los servlets SingleThreadModel . Se recomienda que un desarrollador tomar otros medios para resolver esos problemas en lugar de implementar esta interfaz , tales como evitar el uso de una variable de instancia o sincronizar el bloque del código acceder a esos recursos.
Si no puede lograr lo que se diseñó, no se debe utilizar.
Básicamente es una manera pobre de manejar concurrencia. Elimine el estado de su servlet, de modo que varios subprocesos puedan usar el mismo servlet simultáneamente. Mantener el estado en un "grupo" de instancias de servlet, cada una de las cuales puede tener estado restante de la solicitud anterior, etc. es bastante horrible.
De Java Servlet Spec:
El uso de las garantías de interfaz SingleThreadModel que sólo una hilo a la vez va a ejecutar en el servicio método de una instancia de servlet dado. Es importante tener en cuenta que esta garantía solo se aplica a cada instancia de servlet, ya que el contenedor puede optar por agrupar dichos objetos . Los objetos que son accesibles para más de una instancia de servlet a la vez, como las instancias de HttpSession, pueden estar disponibles en cualquier momento en particular para múltiples servlets, incluidos los que implementan SingleThreadModel.
Se recomienda que un desarrollador tomar otros medios para resolver esos problemas en lugar de implementar esta interfaz, tales como evitar el uso de una variable de instancia o sincronizar el bloque del código acceder a esos recursos. La interfaz SingleThreadModel es obsoleta en esta versión de la especificación.
Sí SingleThreadModel interfaz está en desuso. No lo uses. De hecho, no lo necesita, en su lugar use variables locales en lugar de campos de objetos, ya que "cada hilo obtiene su propia copia de las variables locales en Java. Simplemente eliminando el campo del objeto y reemplazándolo con una variable local, este problema de subprocesamiento en particular esta resuelto." Reference
- 1. ¿Por qué auto_ptr está en desuso?
- 2. ¿por qué absolutelayout está en desuso?
- 3. ¿Dónde está javax.servlet?
- 4. Por qué saveOrUpdateAll está en desuso en la primavera HibernateOperations
- 5. ¿Por qué MutableString está en desuso en Python?
- 6. ¿Por qué Files.deleteDirectoryContents() está en desuso en Guava?
- 7. ¿Por qué el módulo Rails Inflector está en desuso?
- 8. css: ¿por qué ** color: red ** está en desuso?
- 9. ¿Por qué ActiveRecord :: Base # update_attributes está en desuso?
- 10. ¿MFC está en desuso?
- 11. java.util.Timer: ¿está en desuso?
- 12. getch está en desuso
- 13. ¿Hibernate está en desuso?
- 14. ¿IsampleGrabber está en desuso?
- 15. SMSManager está en desuso
- 16. ActivityGroup está en desuso
- 17. $ HADOOP_HOME está en desuso
- 18. 'sharedDispatcher' está en desuso
- 19. AuthorizationExecuteWithPrivileges está en desuso
- 20. dismissmodalviewcontrolleranimated está en desuso primero en desuso en ios 6
- 21. ¿Qué significa "en desuso"?
- 22. Arguments.callee está en desuso - ¿qué debería usarse en su lugar?
- 23. iPhone stringWithCString está en desuso
- 24. -setStatusBarHidden: animated: está en desuso
- 25. jquery's live() está en desuso. ¿Qué uso ahora?
- 26. devise.registrations.reasons en archivos yml está en desuso?
- 27. ¿Dónde está WebLogic Jar que contiene javax.servlet en 10.3?
- 28. ¿Por qué Perl se queja de que "el uso de división implícita en @_ está en desuso"?
- 29. Scala: ¿por qué remove está en desuso en favor de filterNot?
- 30. isOrientationSupported está en desuso en IOS