I started working on RMI recently and this particular concept is not clear to me:

Dave Bucci

I believe that the call is synchronous because the client must be prepared to receive exceptions back, which may be thrown at any time throughout the server object's processing.

I'm fairly certain (though I haven't tried it) that if you truly want asynchronous communication, your server object can cause that to happen by creating a thread to perform the processing, and returning immediately.

If it weren't for that issue, your logic would be entirely correct.

You can see a detailed discussion of issues and patterns in this at http://www.distributedcoalition.org/mailing_lists/dist-obj-tech/msg00007.html and http://www-106.ibm.com/developerworks/java/library/j-rmiframe/