On Wed, Feb 23, 2005 at 10:30:51AM -0800, Jeremy Boynes wrote:
> Dain Sundstrom wrote:
> >On Feb 23, 2005, at 9:16 AM, Jeremy Boynes wrote:
> >
> >>David Blevins wrote:
> >>
> >>>The protocol layer in OpenEJB uses the canonical string version all 
> >>>over the place.  We avoided ObjectName on the wire as String is 
> >>>capable of representing an ObjectName and serializes faster and with 
> >>>less bytes as there is special logic in 
> >>>java.io.ObjectOutput/InputStream that basically treats them like 
> >>>primitives.
> >>
> >>
> >>I take it you have some form of custom serialization code that 
> >>converts ObjectName to String and back again. GBeanName is 
> >>Serializable (and the serialized form is just a String) so it should 
> >>continue to work right now until you can add custom serialization just 
> >>as for ObjectName.
> >
> >
> >OpenEJB sends the string to the client and sometimes gets a string back 
> >(ejbs are indexed by number for speed).  When a string comes back it is 
> >looked up directly into a hash, keyed on the string.  The means that 
> >OpenEJB clients do not see any Geronimo code.  If GBeanNames were used, 
> >then the client would need a GBeanName class.
> >
>
> I don't see the issue - OpenEJB can still send Strings to the client, it 
> just needs to convert then into GBeanNames /back on the server/ before 
> looking them up in its map; or ObjectNames, or whatever it wants to key 
> the map on (although GBeanName seems intuitive). 

We key on string as it's a lot faster on the .equals call.

> As you are already assuming the client is not going to be reordering
> the String you send it, then it seems to me that things would be
> unchanged.

Is it equally safe to assume the order won't change on the server?  Things like 
EJB handles have to stay valid across server crashes and restarts.  I want 
avoid anything that might cause the client and server versions of the name got 
fall out of sync.

> Anyway, isn't there a good chance there is going to be Geronimo code on 
> the client anyway? Given this is a proprietary protocol, there is a high 
> likelihood the client is some form of Geronimo server (e.g. an 
> application client, web server, another OpenEJB server, or just a 
> "remote" client in-VM) and where it is a non-J2EE client then its going 
> to need OpenEJB jars anyway.

At current time, there is no chance there is going to be Geronimo or even 85% 
of the OpenEJB code on in a non-J2EE client.  We've tried really hard to keep 
the openejb-client jar thin and free of dependencies.  Anyway, I'm getting a 
little off-topic.

-David

Reply via email to