Si tengo un @ManagedBean
que es @SessionScoped
, ¿por qué debería usar un EJB @Stateful
? Lo usé antes para los carritos de la compra y para mantener un estado conversacional, pero como un frijol administrado se mantendrá durante la sesión del usuario, puedo almacenar el estado allí, luego llamar a SLSB para la lógica de negocios. ¿Es eso correcto? Si es así, los ejbs con estado se dejarán para aplicaciones más específicas, como cuando necesita transacciones, etc.sessionscoped managed bean vs stateful ejb
Respuesta
Muy a menudo, los beans de sesión sin estado se pueden utilizar para una gran cantidad de problemas comerciales.
Stateful no significa necesariamente que solo un servidor remoto mantiene el estado, aunque esta es ciertamente una de las opciones. Un cliente de Swing remoto podría enviar primero un montón de datos a un bean de sesión con estado, aferrarse al stub y luego enviar algunos comandos que operan con estos datos. Esto evita que el cliente tenga que enviar la misma (gran cantidad de) datos todas y cada una de las veces.
En el caso de uso remoto, de hecho refleja el uso de la sesión HTTP cuando se utilizan clientes web (navegadores). La principal diferencia es que la sesión es por bean aquí, mientras que con la sesión HTTP, la sesión es un ámbito compartido por muchos beans. Dado que la sesión HTTP se basa en cookies, y las cookies son globales para un dominio para todo el navegador, la sesión HTTP no admite directamente varias sesiones del mismo cliente (por ejemplo, por pestaña o por ventana). Esto es trivial con beans de sesión con estado.
Sin embargo ...
clientes remotos oscilación hablando con EJB remotos no son tan comunes.
En el contexto que describió en su pregunta, normalmente utilizará EJB locales y almacenará la mayoría del estado en la sesión HTTP (tenga cuidado al compartir!) Y estos días en el alcance de vista o conversación.
Por último, ¿cuándo usar los beans de sesión con estado en este escenario?
Un caso de uso importante es el extended persistence context
en JPA
. Normalmente, con un administrador de entidades de ámbito transaccional, cuando una entidad cruza el límite transaccional de una llamada a un método EJB, se desconectará. Si desea (con optimismo) bloquear una entidad entre las interacciones del usuario, esto no es deseable. Perderás el bloqueo.
Con un contexto de persistencia extendida, la entidad permanece adjunta y los bloqueos son válidos cuando regresa de una llamada al bean de sesión con estado. Esto es muy útil para la funcionalidad de vista previa para asegurar que nadie más ha realizado ningún cambio en la entidad cuando está bien después de la vista previa. O, de hecho, para un carrito de compras en el que desea asegurarse de que durante algún tiempo el artículo no pueda venderse a otra persona mientras esté en el carrito.
- 1. sesión beaded managed bean vs stateful bean vs httpsession
- 2. JSF-bean gestionado EJB inyección
- 3. Session Beaded managed Bean y ActionListener
- 4. EJB 3.1 Stateful y CDI Scope Conversation
- 5. JSF Managed Bean auto-create?
- 6. JSF - Obtenga la instancia de SessionScoped Bean
- 7. Startup ejb bean no funciona
- 8. JBoss EJB Bean no ligado
- 9. Java EE 6: ¿Cómo llamar a Stateful Session Bean desde Stateless Session Bean?
- 10. Servicios web Stateful vs. Stateless
- 11. @EJB en @ViewScoped bean administrado causa java.io.NotSerializableException
- 12. Application vs Container Managed EntityManager
- 13. ¿Cómo funciona @SessionScoped con EJB? ¿CDI es solo para web-tier?
- 14. "No se puede convertir ejbRef de EJB" en la CDI (Weld) la inyección de @Stateless EJB en @SessionScoped JSF2 frijol en Glassfish
- 15. Managed C++ (C++/CLI) vs C#/VB.NET
- 16. Usando un Stateful Session Bean para rastrear la sesión de un usuario
- 17. EAR vs EJB + WAR separado
- 18. Spring vs EJB. ¿Puede Spring reemplazar a EJB?
- 19. ¿Debo usar Bean Validation con EJB 3.1, JSF2.0 y JPA?
- 20. EJB vs CDI y el patrón "Entity Boundary Control"
- 21. Enterprise Beans Stateless and Stateful Beans
- 22. CDI SessionScoped Bean resultados en dos instancias en la misma sesión
- 23. JSF2: ¿Abrir sesión en vista con EJB?
- 24. EJB 3.1 concurrencia administrada por contenedor vs. sincronizada
- 25. Servicios web vs EJB vs RMI, ventajas y desventajas?
- 26. @Singleton en Java EJB
- 27. EJB 3.1 @EJB Inyección en POJO
- 28. EJB 3: Acceder a un bean de sesión con estado desde un cliente de aplicación
- 29. ¿Cómo inyectar un Bean Session en un Bean Driveled Message?
- 30. ¿Cómo debería ser EJB Stateless Session Bean correctamente inyectado en el módulo web?
Gracias por la respuesta muy detallada. Pensé que el uso de beans con estado se redujo a algo muy específico – arg20