My approach was simple. My locking mechanism was implemented by simple Synchronize wait and notifyall. I had a static Hashtable which holds the locked records with a cookie. In my case I used the instance of the Data class as a cookie to identify the unique client because I have one data class instance per client connection.
I used RMI to implement the server.
I took the idea of Andrew while implementing the server.
Here is the thread for itlocking without a cookie
Let me know if you need to know anything specific.