> My current idea is that we should assume that _all_ > resource objects are stateless and _always_ deserialize > these ResourceProxyHandlers by obtaining the actual resource > from the ResourceInjectionService.
Now I am confused ;) This means to _not_ deserialize those Resources at all, but instead always re-attach by getting it fro JNDI again? What I meant in my long flame: JNDI objects were supposed to be stored in serialised form, but that in the mean time JNDI got used as a big fat toilette where lots of objects got flushed down in the various EE specs without thinking about it. Take the QueueConnectionFactory [1] for JMS. The spec says that the impls _should_ be Serializable, but quite a few impls are not. In fact: a few resources we get from JNDI are Serializable, others are not. My opinion: The ones which implement Serializable should manage themself, the others should be re-attached from JNDI via a 'proxy' But maybe I still miss the 'one' important point ;) LieGrue, strub [1] --- On Tue, 12/28/10, David Jencks <david_jen...@yahoo.com> wrote: > From: David Jencks <david_jen...@yahoo.com> > Subject: Re: Problem with serializing ResourceProxyHandler > To: dev@openwebbeans.apache.org > Date: Tuesday, December 28, 2010, 11:31 PM > I'm afraid I don't understand your > response very well. > > On Dec 27, 2010, at 3:13 AM, Mark Struberg wrote: > > > Hi! > > > > I think this is really theoretical. Serializing / > Deserializing will most probably only happen in a cluster > between the same applications. If they have different > configurations activated on different cluster nodes, well > ... ;) > > > > Can you think of any other scenario? > > > > such scenarios might be unlikely but since they are easy to > guard against I don't really see why not to do so. On > the other hand if we decide to delegate all the content > serialization (see below) then we can delegate this checking > as well. > > > > > For the general serialisation question: > > JNDI usage in EE servers is in general (and thus also > the EMF handling in this area also) pretty sick. Originally > EMFs have been Serializable because they are bound to JNDI. > JNDI is typically bound to directory services in serialized > form. But in EE they are now used completely different. They > should now all be javax.naming.Referencable and not > Serializable anymore... > > > > If we get other things from JNDI which are > Serializable, then we must serialize them to get back this > exact state because any intermediate JNDI rebind would > probably crash our application. > > > > I personally try to avoid JNDI wherever possible. They > are perfectly over-specced and still behave very different > on different EE servers when it comes to gory details ;) > > I don't understand any of your argument here, nor what > conclusion you have reached. You are free to write a > ResourceInjectionService backed by something other than > jndi, although I don't see how it would relate to how > @Resource annotations are supposed to work in cdi. > > My current idea is that we should assume that _all_ > resource objects are stateless and _always_ deserialize > these ResourceProxyHandlers by obtaining the actual resource > from the ResourceInjectionService. This means leaving > out the FailoverService here. We could have a > ResourceSerializationService which if supplied does the > serialization. Or we could delegate all the > serialization to a ResourceSerializationService so I can > implement something that works for geronimo without > disturbing the current special-casing of corba stubs. > > Hoping you can clarify in a way I can understand :-) > > thanks > david jencks > > > > > LieGrue, > > strub > > > > > > > > --- On Mon, 12/27/10, David Jencks <david_jen...@yahoo.com> > wrote: > > > >> From: David Jencks <david_jen...@yahoo.com> > >> Subject: Re: Problem with serializing > ResourceProxyHandler > >> To: dev@openwebbeans.apache.org > >> Date: Monday, December 27, 2010, 7:43 AM > >> And another thing... > >> > >> ResourceProxyHandler will have problems if the > serializing > >> and deserializing OWB instances differ on whether > >> FailoverService is present. We should write > a token to > >> indicate whether FailoverService was used to > serialize and > >> use it in deserialization. > >> > >> thanks > >> david jencks > >> > >> On Dec 26, 2010, at 11:21 PM, David Jencks wrote: > >> > >>> There's some asymetric logic in > >> serializing/deserializing ResourceProxyHandler. > >>> > >>> Serializing: any serialized actual > resource is > >> written to the object output stream, whereas > >> non-serializable objects have a marker > serialized. > >>> > >>> Deserializing: The object is read from the > object > >> input stream, but only the marker object and CORBA > stubs > >> result in the actualResource field being set. > >>> > >>> Finding the marker object results in getting > the > >> resource again from the ResourceInjectionService, > typically > >> by looking something up in jndi. > >>> > >>> I would prefer to always get the actual > resource from > >> the ResourceInjectionService. Is there a > strong reason > >> not to do this? > >>> > >>> If anyone wants to keep the current approach, > I think > >> the logic currently in place to reconnect a CORBA > stub uses > >> the wrong ORB, I think it needs to look up the orb > in jndi. > >>> > >>> I'm going to fix the current hole in the logic > (rev > >> 1053011) but IMO serializing random objects rather > than > >> getting them from the bean is a bad idea. > Even with > >> this I get a tck failure trying to deserialze an > >> EntityManagerFactory. > >>> > >>> thanks > >>> david jencks > >>> > >> > >> > > > > > > > >