Pregunta

Según tengo entendido, los beans de sesión sin estado se utilizan para codificar la lógica empresarial.No pueden almacenar datos en sus variables de instancia porque su instancia es compartida por múltiples solicitudes.Entonces parecen más bien clases Singleton.Sin embargo, la diferencia es que contiene crea (o reutiliza desde el grupo) la instancia separada de beans de sesión sin estado para cada solicitud.

Después de buscar en Google, pude encontrar el razonamiento de que la especificación Java EE dice que se supone que son de un solo subproceso.Pero no puedo entender la razón por la cual se especifica que son ROSCA ÚNICA?

¿Fue útil?

Solución

Los SLSB son de un solo subproceso debido al contexto TX; Principal está asociado con una instancia de bean cuando se llama.Estos beans se agrupan y, a menos que se alcance el tamaño máximo del grupo, se procesan en subprocesos separados (dependiente del proveedor).

Si los SLSB estuvieran diseñados para ser seguros para subprocesos, cada llamada se habría visto como un servlet doGet/Post con información de solicitud que contiene Tx Context, información de contexto de seguridad, etc.Entonces al menos el código parece limpio (depende del desarrollador).

Otros consejos

La razón principal por la que los beans de sesión sin estado tienen un solo subproceso es para hacerlos altamente escalables para el contenedor.El contenedor puede hacer muchas suposiciones simplificadoras sobre el entorno de ejecución.Una segunda razón es hacer la vida más fácil para el desarrollador porque el desarrollador no tiene que preocuparse por ninguna sincronización o reingreso en su lógica de negocios porque el bean nunca será llamado en otro contexto de subproceso.

Recuerdo el razonamiento que se discutió en las revisiones de la especificación EJB 1.0 original.Yo miraría la sección de objetivos de la especificación.Ver http://java.sun.com/products/ejb/docs.html para ver la lista de especificaciones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top