I used RMI in my implementation.
At my service implementation, I created a method to provide a new instance of Database services to the client, so each client invoking this method before calling database services, get a brand new database service, so each client will have an exclusive instance of database implementation. I used the database instance to identify the client.
I recommend Andrew's book! It help me a lot!