> Siegfried Goeschl wrote:
> could you provide some more technical background information

The idea is quite simple and certainly not new in the Java world: method
calls and return values are considered as data structures that are being
serialized for transport.

The data structures are

JaffreCallFrame
   flags: int
   interface: Class
   method: String
   types: Class[]
   args: Object[]
   userdata: Object

and

JaffreReturnFrame
   exception: boolean
   flags: int
   result: Object
   userdata: Object.

Call and return frames are analog e.g. to the request and response messages
in SOAP. The userdata fields can be used to transport extra data, e.g.
session cookies (SOAP headers can be seen as an analogy).

Remote interfaces are normal Java interfaces without any decorations
(annotations or something like that).

Clients create proxys for remote interfaces. Calls to proxys are serialized
as call frames, transported, deserialized, and then routed (per
interface/method) to an appropriate service endpoint that implements the
remote interface. After the call has been performed, the result is
serialized as a return frame and then sent back to the client where the
proxy returns the deserialized result.

> +) how does it compare to RMI, JSON or Hessian 
> (http://hessian.caucho.com/)

I'm not very familiar with RMI but I think it uses similar techniques. As
Jukka pointed out, Jaffre should be considered as a RPC mechanism rather
than a RMI mechanism. RMI is probably much more powerful than Jaffre, even
though it may lack some ease of use and extensibility.

JSON is a platform neutral web technology. It deals mainly with
interchanging data. Remote procedure calls seem to be outside the JSON spec.

Hessian is platform neutral, at least at the client side, and it uses it's
own wire format. So it seems to be more ambitious than Jaffre. However, I
don't know if it supports out-of-band user data and how extensible it is.


-- 
Cheers,
Alex



---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscr...@incubator.apache.org
For additional commands, e-mail: general-h...@incubator.apache.org

Reply via email to