I've checked in a framework for a Java API where you would create a Request object on a Java client, populate it, and then pass it an OutputStream so it can write its XML description onto the stream that is connected to the Java server on the other end. The Java server passes it to an object factory that will read the XML and create an extended version of the Request object that includes a Run() method. The Run method executes on the Java server and writes data back into the object. When you're done, you pass it the OutputStream that connects back to the Java client and it writes the XML for the response. Then the Java client passes the stream to an object factory that pulls up a new copy of the original object, but with the response information in it.
We'll see what everyone thinks of it...
I've also written the basic code to handle object locking on the Java server. It will (in an act of heresy) use the try-with-resources feature in Java 7 and create a lock object to wrapper each of the underlying locks so that we can make sure that they get closed.
Because, you know, the penalty for creating an object to wrapper the lock is a lot less painful than the penalty you pay when someone forgot to release a lock on some obscure pathway through the code...
But it was a productive day of work as I wrapped up a couple of things that I'd been working on. :)