Three and half years later I'm faced with the same design issue. I too have some static data which change once in a few days, in the middle of the regular hours of operation. Obviously, restarting when many users are logged in, is not an option.
Have you found a better solution than a singleton? That was my original approach but refresh became a hassle. Now, I'm debating if I should use a "stateless" session bean (just one instance of it) which should have the following:
- hashtable for the objects from the database
- public getter method to retrieve an object
- refresh method which when called should block access to the getter method until refresh is completed
I would appreciate any feedback that you can provide.