Founder AspectWerkz AOP Framework
Jonas Bonér is working at Terracotta Inc. with a focus on strategy, product development & architecture and technical evangelism. Terracotta provides software that delivers enterprise-class infrastructure services to applications transparently at runtime with minimal required application code changes.
Prior to Terracotta, Jonas was a senior software engineer at the JRockit team at BEA Systems, where he was working on runtime tools, JVM support for AOP and technology evangelism.
He is the founder of the AspectWerkz AOP framework and committer to the Eclipse AspectJ 5 project. Jonas is a frequent speaker on AOP and
other emerging technologies (JavaOne, JAOO, eWorld, Java Pro Live!, Javapolis, AOSD conferences etc.).
Presentations
Transparently Clustered Spring
How do you scale a Spring application beyond a single node? How can you guarantee high-availability, eliminate single points of failure and make sure that you meet your customer SLAs?
Historically speaking, clustering an application is not easy: it takes a significant amount of time and usually requires you to rewrite parts of your application. It also usually perturbs your domain model and breaks object identity.
But does it have to be like that?
In this talk Jonas Bonér will walk you through how to cluster your Spring application, Transparently and Naturally, with zero changes to your application code, using the forthcoming Terracotta Spring Runtime. The Terracotta Spring Runtime allows you to take an arbitrary Spring application, written for a single JVM, and cluster it to N
nodes while preserving the exact same semantics. It also drops in a custom implementation of Spring AOP which improves its performance significantly (even when running on a single node).
The session is backed up by live demos, showing for example:
- how to make Spring Bean's lifecycles and state mean the same thing on a cluster as on a single node (e.g. clustered, but local to the same ApplicationContext)
- how to turn Spring's ApplicationContext Events into distributed events (but still local within the same ApplicationContext)
- how to avoid using regular messaging and simplify the programming model by:
- turning arbitrary method invocations into asynchronous distributed events
- use a regular java.util.List as a message queue
- etc.