TS-3217: Transparently Clustered Spring
Goal is to take an arbitrary Spring application and deploy it in a cluster without focusing on a clustered deployment.
Presented possible solutions using JMS or JCache to synchronize client sessions and data across multiple JVMs/Servlet containers. Argument is that the VM, or application server facilities, should coordinate cluster operations transparently to the application. Also, the serialization behavior in the Java language has traditionally required entire object graphs to be synchronized in a cluster whenever a single attribute in an object graph is changed. This is incredibly inefficient and should be avoided.
So, how does Spring help us solve clustering? Terracotta, using Spring, permits the injection of clustering facilities into clustered applications at runtime. It turns the Spring ApplicationContext events into distributed reliable events. Shares JMX states, and Spring Webflow's page flows. All of this is managed declaratively through the Terracotta XML configuration file.
This sounds really interesting, and the Spring ApplicationContext seems like an ideal point for synchronization. It's unfortunate that the presenter did such a poor job structuring the session (30 minutes on clustering solutions that don't work).