What is it?
ClientSession is a compact java library for securely maintaining web client state on the client side rather than on the server. For example, rather than the J2EE application server maintaining the client state in a Session a web browser can maintain the client state in a string passed between pages.
Why is that a good thing?
There are several problems with server based sessions that ClientSession can solve:
With a server side session there are competing pressures on the length of timeout. Keeping the timeout short reduces stale sessions, but increases the frequency with which the user's session times out while still in use.
Memory on the server is a limited resource. With a server based session, scaling to many users with large sessions could mean running out of memory. This problem is eliminated if sessions are stored on the client side.
Sessions in a clustered environment can cause substantial network overhead when sessions are synchronised between servers.