All-- I'm about to make a slight design change to the way NetUI does user-wide locking. This is currently done on the session, which works often but not all the time depending on the implementation of the HttpSession object. In order to ensure that this works correctly on all containers and session implementations, I'm going to add an optional HttpSessionListener that will create a session-wide mutex object that can be used to serialize a change in the session.
This will be used in two places: - where the DeferredSessionStorageHandler persists changes to the HttpSession - where the NameService adds itself to an HttpSession I don't expect any problems with this -- it's a reasonably simple change. If the HttpSessionListener isn't wired up, the implementation will fall back to using the HttpSession. This will affect the following code: - add an o.a.b.n.p.HttpSessionMutexListener class that adds / removes a private inner class Mutex object - add an Object getSessionMutex(HttpSession session) method to o.a.b.n.u.i.ServletUtils - add a Stirng contasnt to ServletUtils that defines the key used to store the mutex in the session. This follows a pattern similar to that used in Spring to provide a user-scoped lock that isn't the HttpSession object. Comments welcome. Eddie
