Originally posted by Michael Morris:
There is still one point on RMI that I am unclear on: What happens when a lease expires on an remote object while a live client holds an active reference to that object? [...] How does the client know what the lease duration is?
The lease is not allowed to expire unless the client has crashed or the network connection between client and server is severed. If this happens, the server-side skeleton and object will be cleaned up and next time the client calls the object an RMIException will be thrown.
You don't need to call DGC.dirty(). This is taken care of by the RMI implementaton.
The lease duration is contained in the Lease object returned by DGC.dirty(). Off the top of my head I can't remember a way for application-level code to determine the lease duration. On a protocol level the server does communicate the lease duration to the client so the client knows when to renew it, but that's firmly under the hood.
Ultimately these are RMI implementation details that should be of no concern to a humble developer, I'd think.
- Peter
[ April 17, 2002: Message edited by: Peter den Haan ]