1) Why do you want to replicate a session? If load balancing is used, usually the sessions are distributed over instances, not the requests, meaning requests of a single session will be served by a single instance, so there is no need for replication at all.
4) You can just use a java hashmap to keep data just in memory, and check whether the corresponding session is still active on a regular basis. Look at the community commons locking system for an example.