-
1. Re: extended persistence context with JavaBeans ?
norman.richards Aug 13, 2007 7:34 PM (in response to sirandreus)The lifecycle of an EJB3 extended persistence context is tied to the lifecycle of the bean that is using it. Seam allows you to use a bean with an extended persistence context, but it doesn't provide an extended persistence context to anything. Instead, the seam-managed persistence context is scoped to the conversation. Are both requests happening in the same conversation or are they separate conversations?
-
2. Re: extended persistence context with JavaBeans ?
sirandreus Aug 14, 2007 3:32 AM (in response to sirandreus)hi norman,
thank you for your quick help.
The requests happened inside a Session Scope, but (if I understand correctly) still in different conversations. Thus I added a @Begin annotation at the factory method, which is called once, when the page is loaded.
I haven´t annotated any method with @End. However, if the Session ends, will the Conversation end as well ? Will the persistence context be cleared as well ?
Here is the code: (the Message class and the xhtml code is like in the original tutorial)@Name("messageManager") @Scope(ScopeType.SESSION) @Transactional public class MessageManager { @DataModel private List<Message> messageList; @DataModelSelection @Out(required = false) private Message message; @In private EntityManager entityManager; @Logger private Log logger; @Begin @Factory("messageList") public void findMessages() { Message m1 = new Message("T1"); m1.setTitle("T1"); m1.setText("text1"); m1.setDatetime(new Date()); Message m2 = new Message("T2"); m2.setTitle("T2"); m2.setText("text2"); m2.setDatetime(new Date()); Message m3 = new Message("T3"); m3.setTitle("T3"); m3.setText("text3"); m3.setDatetime(new Date()); entityManager.persist(m1); entityManager.persist(m2); entityManager.persist(m3); this.messageList = entityManager.createQuery("from Message").getResultList(); logger.info("messageList initialized"); } public void select() { message.setRead(true); } public void delete() { entityManager.remove(message); messageList.remove(message); message = null; } }
thank you,
Andreas -
3. Re: extended persistence context with JavaBeans ?
norman.richards Aug 15, 2007 12:39 AM (in response to sirandreus)If the session ends, all conversations in the session end. You'll need to verify that your conversation is being propagated. If it is, and you are still not seeing the correct persistence context behavior, then we can look and see where the problem might be.