Hi All, 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? The API docs says that a client should call DGC.dirty() to renew the lease. How is that accomplished or does it just happen through the stub? One further question: How does the client know what the lease duration is? Thanks in advance Michael Morris
Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius - and a lot of courage - to move in the opposite direction. - Ernst F. Schumacher
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 ]
Joined: Jan 30, 2002
Thanks Peter. I'll fret no longer on the subject. Michael Morris