How is actually, physically serializing a EMF *instance* to another VM
a valid use case? Notice that the case of writing the UUID/name to the
serial stream is explicitly different that this. That approach is just
tokenizing the way to resolve the proper reference to the EMF on deser
using that UUID/name.
So what is the actual valid use case for "duplicate
EntityManagerFactory [creation]" on ser/deser? To me, on deser you
resolve the name reference if possible; if not, you resolve the UUID
reference; otherwise, you throw an error. This is exactly what we do
with SessionFactory btw in terms of ser/deser. Why is that not the
process here?
On Mon 06 Feb 2012 10:32:01 PM CST, Scott Marlow wrote:
Feedback is welcome on a proposed change for HHH-7018
https://github.com/scottmarlow/hibernate-orm/commit/007e7f17eed10c6c1db55...
When we serialize the EntityManagerFactory in 4.0.0, there can be
nonserializeable objects in the EMF configuration properties (e.g.
JTA_PLATFORM, datasource, other stuff). In most cases, we will have a
session factory name (preferred) or persistence unit name to uniquely
identify the EntityManagerFactory. In 4.0.1, during serialization, we
only serialize the (hopefully) unique name.
If a duplicate EntityManagerFactory is created (by name), no immediate
error is given, instead we only give an error later when deserializing
the EMF. The HibernateException thrown during deserialization will look
like:
"registry contains more than one (" +
entityManagerFactorySet.size()+ ") entity manager factories: "
+ name
If that causes issues for any application, the SESSION_FACTORY_NAME can
be passed in from the troubled application (possibly with
SESSION_FACTORY_NAME_IS_JNDI set to false but true is also fine).
For the 4.1 release, I would like to take this one step further. The
above changes, only were made for EntityManager serialization of the EM
to EMF reference. The next step is to apply the same change to the EMF
readObject/writeObject, such that we also allow the EMF to be serialized
when it contains nonserializable objects. This also simplifies the EM
serialization, as it can just use default serialization for the EMF.
The proposed commit (to be fixed in 4.1) is at
https://github.com/scottmarlow/hibernate-orm/commit/007e7f17eed10c6c1db55....
Feedback on the change is welcome (we are building 4.1 final middle of
this week).
Scott
_______________________________________________
hibernate-dev mailing list
hibernate-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev