So to sum up both:

org.apache.openejb.client.Client#processRequest

and...

org.apache.openejb.server.ejbd.RequestHandler#processRequest (4
Implementations all added various levels of complexity)

Introduced calls that broke backwards compatablity between 3.x / 4.5.x and
early 4.6.x-SNAPSHOT versions. 

org.apache.openejb.client.EJBResponse#VERSION, which was effectively never
used correctly, could potentially be used to try and get some level of
backwards compatibility, but I doubt it as the server has no idea if the
calling client is 3.x / 4.5.x or early 4.6.x-SNAPSHOT versions (and
serialization is also likely to fail).

With 4.6.0+ we now have concrete means to ensure this does not happen again:

Providing the de-serialized client ProtocolMetaData to each server object
that goes over the wire now allows us to know on the server which client
version is calling and how to respond, and serialVersionUID's are now also
defined - The legacy tests will fail if someone forgets to follow the
pattern when making changes at protocol level.

And finally to respond to the initial topic - The system property
'openejb.client.protocol.version' is documented correctly (Allows new
clients to potentially communicate with older servers), but it needs to be
made more clear that this does NOT allow old clients to communicate with new
servers prior to 4.6.0.

Andy.



--
View this message in context: 
http://openejb.979440.n4.nabble.com/OpenEJB-Client-incompatibility-between-3-1-x-and-4-x-tp4666640p4666650.html
Sent from the OpenEJB Dev mailing list archive at Nabble.com.

Reply via email to