In an attempt to ‘increase performance’, many people will try to hack around in JMS - thereby falling into the idempotent receiver trap by checking for duplicate message receipt. The consequence: scalability actually degrades!
We’ve uploaded a slideshare presentation on developing transactional applications with Spring. Enjoy!
Here is another excellent article about the cost of application servers, and why a paradigm shift is needed with lighter-weight alternatives:
Interesting note: the author used to work at Bea, so he definitely knows what he is talking about;-)
Check out http://www.tomcatexpert.com/blog/2010/07/07/how-migrate-jee-applications-tomcat for a nice discussion on how to migrate from jee to a light-weight alternative like Tomcat - with Atomikos for JTA if needed.
Check out this cool blog entry on how this can all work together.
DISCLAIMER: the suggested solution has not yet been verified by Atomikos…
The cloud phenomenon is an interesting one, and a natural evolution of the outsourcing model. While a lot is going on around cloud computing itself, little is being said about reliability.
Do clouds offer reliability? In a way yes: caching systems like Terracotta, Gemstone or Oracle’s Coherence offer a fail-safe mode for availability of your data in the form of caches. So if a cloud node goes down, chances are that a live copy of the data still exists somewhere else, which means that your process can continue working elsewhere.
All is fine (or mostly fine) if you are working with a single database and are processing, say, web requests in the cache. After all, if you only have one database and no other resources then you don’t even need something like a transaction manager (or Atomikos, for that matter). There are at least two situations where things change:
- If you queue cache updates to enable write-behind, then you find yourself in a queuing scenario and are processing jobs from a queue to a database. Enter distributed transactions.
- If you are not processing web requests but rather get queued requests from the start. Enter distributed transactions.
In both cases you should at least consider using a transaction manager. In both cases, Atomikos is a good choice for the following reasons:
- It’s open source (or at least our basic version is)
- It’s very light-weight and easy to deploy (meaning it lends itself easily to cloud-oriented virtualized configurations)
- It bundles over 10 years of experience and market leadership
- It provides full crash recovery and all other bells and whistles - unlike many of the built-in solutions that you will find in a cache
So in that way, Atomikos provides “reliability for the cloud”.
We’ve just released TransactionsEssentials 3.6.5 - available as usual via our download page or via the Maven repo.
Our maven integration has not been the most fluent thing we ever did, but we now seem to have gained some traction in the right direction (thanks to community hints, some solid teamwork and hours of additional brain-storming). Here is a quick update on where we are:
- Upload to maven central is working but not yet optimal (we’re working on that).
- Meanwhile, we’re also re-evaluating our entire build environment to optimize for maven builds (i.e., switching from ant to maven entirely).
- We’re also restructuring our SVN repository so it has optimal support for our business model.
As you can see, we’re not afraid to throw away anything in our quest to improve things Contrary to what I expected, going from ant to maven seems to simplify our build after all: maven seems to be maturing, and new team members tend to know maven better than ant.
All these changes have quite some impact on the architecture of our build ecosystem, so we can’t just do them overnight. However, we would like to have them ready before we bring out the next major new release(s).
Thank you for your patience!