2010-06-30 15 views
6

¿Tiene sentido hablar sobre el patrón Open View In View dentro de las aplicaciones JSF2? Mi aplicación tiene JSF2 Managed Beans llamando a Business Service EJBs que hacen todo el material relacionado con db (hay una capa DAO pero eso no importa en este momento).JSF2: ¿Abrir sesión en vista con EJB?

Tener un patrón OSIV significaría que Managed Bean tendría que asegurarse de alguna manera de que se abrió la sesión subyacente.

También estoy usando JPA.

Respuesta

2

Teóricamente, el problema es exactamente el mismo: la entidad se separará cuando abandone el EJB a menos que algo mantenga abierto el ámbito del EntityManager. (Aquí hay una gran publicación sobre el tema en general: JPA implementation patterns: Lazy loading).

Desde un blog post leí:

8) No Abierto entidad gestora En vista de soporte. [...] En EJB3, cuando su entidad hojas de frijol con ámbito de transacciones EntityManager, se separa de la persistencia contexto y que ya no puede confiar en carga lenta (de hecho, la especificación JPA no lo hace especificar el comportamiento en tal situación, probablemente alguna excepción depende del proveedor será ser lanzado ...) por supuesto, es posible utilizar EntityManager con extendida contexto de persistencia, sosteniendo el contexto transacción y la persistencia como siempre y cuando yo tu quieres. Pero esta característica es solo disponible para SFSB, mientras que las clases DAO son ejemplos típicos de servicios apátridas, ya que solo envían llamadas a la capa de persistencia . Además, tener instancia de bean DAO para cada cliente parece ser una gran exageración.

No estoy seguro de que sea realmente cierto. Según tengo entendido, debería poder escribir un filtro de servlet que use el UserTransaction para iniciar y confirmar la transacción (como el filtro normal en OSIV). EJB participaría en la transacción iniciada en el filtro y el EntityManager permanecería abierto. Aunque no lo probé, mi sugerencia sería intentarlo.

+0

Caucho tiene un filtro como el que ha descrito: http://wiki.caucho.com/TransactionFilter – cdmckay

Cuestiones relacionadas