On the server side you need to tell us what the "lock" object is. It appears to be some kind of Collection object
Your locking code does not block when trying to lock a locked record.
Can IllegalMonitorStateException ever be thrown?
I don't think a Vector is a good choice
how are you ensuring that only the client who locks a record can unlock it?
Client A locks record 5
* Client B starts by unlocking record 5 (don't care if it is locked or not - exception will be swallowed)
* Client B locks record 5