Terracotta is an open source clustering system for Java that supports Tomcat and Weblogic (mentioned specifically) but I imagine it would support any Java Server implementation. It uses bytecode instrumentation to examine shared attributes and submits only changed values to the terracotta server.
Its a decent strategy for performing replication, as out of the box, Oracle’s OC4J will do replication either at the end of each request or on attribute update. Depending on how developers update session attributes, you may be forced to replicate everything at the end of every request…very expensive.
Terracotta seems to have an optimized method of doing it. I’ve never implemented it, but I may give it a shot and see what it can do.