[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-3728) not clearing EntityManager in ManagedPersistenceContext#sessionWillPassivate breaks session replication
by Dan Allen (JIRA)
not clearing EntityManager in ManagedPersistenceContext#sessionWillPassivate breaks session replication
-------------------------------------------------------------------------------------------------------
Key: JBSEAM-3728
URL: https://jira.jboss.org/jira/browse/JBSEAM-3728
Project: Seam
Issue Type: Bug
Components: Core
Affects Versions: 2.1.0.SP1
Reporter: Dan Allen
Fix For: 2.1.1.CR2
Commit 8372 broke the clustering because EntityManager is not being cleared before session passivation. The EntityManager cannot be serialized and therefore to leave it in the conversation context (and hence the session context) prevents the HTTP session from being restored properly. Two ways to fix is either set the EntityManager it to null in the ManagedPersistenceContext#sessionWillPassivate method (the old behavior, which gives us a chance to clean things up) or mark the field as transient. Making the field transient solves the problem that commit 8372 was attempting to fix, which was that the entities were being reloaded from the database on each request in a clustered environment. The problem with using transient is that we don't get an opportunity to formally close the EntityManager (but then again, it might be hard to tell when the session being used jumps a node in the cluster, which is the only time you want to destroy the EntityManager).
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 11 months
[jbossseam-issues] [JBoss JIRA] Created: (JBSEAM-3612) examples should demonstrate obtaining entity manager factory from JNDI via persistence unit reference
by Dan Allen (JIRA)
examples should demonstrate obtaining entity manager factory from JNDI via persistence unit reference
-----------------------------------------------------------------------------------------------------
Key: JBSEAM-3612
URL: https://jira.jboss.org/jira/browse/JBSEAM-3612
Project: Seam
Issue Type: Feature Request
Components: Examples
Affects Versions: 2.1.0.GA
Reporter: Dan Allen
Priority: Minor
Fix For: 2.1.1.CR1
For any example that is deploying to a standard Java EE 5 environment (for instance the jpa example deploying to GlassFish or JBoss AS 5), the entity manager factory should be obtained through JNDI through a persistence unit reference.
5.3.1 of JPA spec:
"Within a Java EE environment, an entity manager factory may be injected using the Persistence-Unit annotation or obtained through JNDI lookup."
It would first need to be declared in web.xml:
<persistence-unit-ref>
<persistence-unit-ref-name>bookingDatabase/emf</persistence-unit-ref-name>
<persistence-unit-name>bookingDatabase</persistence-unit-name>
</persistence-unit-ref>
Then the components.xml would look like this:
<persistence:managed-persistence-context name="entityManager"
auto-create="true"
persistence-unit-jndi-name="java:comp/env/bookingDatabase/emf" />
The reason we should do this is to advocate the Java EE standard approach.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 11 months