Several people have commented to me, and have posted links to my latest blog posting effectively twisting my words around to make the point that Spring was not designed for scalability. Nothing could be further from the truth.
Colin's blog posting says it better than I can - and yes, he is right, I "deserve a spanking" and should know better.
We at Terracotta believe strongly that the Spring framework vastly simplifies the task of creating enterprise applications by, among other things, adhering to some basic principles such as application code should not have any unnecessary dependencies on the underlying infrastructure, and that many infrastructure related tasks can and should be taken care of transparently at runtime. The point I was trying to make (somewhat awkwardly) in my post was that scalability (ie. sharing of state and behavior between nodes in a cluster) should follow those same principles. This is not the full definition of scalability, of course - a completely stateless application can scale very nicely without the need to share in-memory state or behavior between nodes. But, in the cases where state and/or behavior needs to be shared or coordinated between nodes, a Spring application can scale very nicely in conjunction with any number of other products, such as WebLogic Server, Tangosol's Coherence, or our product, Terracotta. In my post, I was drawing a contrast between scalability and simplicity, and in this context, the combination of Spring and Terracotta makes the most sense to us - it achieves the desired scalability (sharing of state/context/behavior) without making the application more complex by requiring dependencies on the underlying infrastructure. Terracotta, like Spring, is transparent and API-free - thus the very natural partnership between Spring and Terracotta.
I hope this clarifies our position somewhat - comments welcome!