Hi David -
The easiest way to generate a unique object for each client is to provide a factory method through the stub. That is, your stub could include a method that returns a unique instance of the thing you want. Have your service interface support something like this:
Make sure of course that Widget is Serializable and Remote too, but that will do the trick.
To look at 100% uptime, your real constraints are not only the process running the JVM, but the reliability of the overall machine. So the pressure's off -- if you're only worried about the server.
But let's say you can get that kind of uptime secured. After a while, your performance guy comes around and says that JVM running your RMI server sucks up a lot of cycles and memory, even when it's idle. Then you want to look at the Activation framework. Activation allows you to run a daemon service on your system that will wake up a server side object when it's needed, rather than make it run all the time. Worth a look!