Archive for the ‘Solutions’ Category

Quick Update: Maven

Thursday, April 8th, 2010

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!

Configuring Hibernate JPA+Infinispan+Atomikos

Monday, February 1st, 2010

Here is an interesting post at JBoss about configuring Hibernate, Infinispan’s caching and Atomikos JTA (among other JTA implementations). Sample code and configuration files are included.

Regards

Fabric3 (SCA) Integration of Atomikos TransactionsEssentials

Wednesday, December 2nd, 2009

Those of you who have been watching our RoadMap know that SCA is one of the topics on our list of things to watch.

Well, it turns out that the team of Fabric3 has been integrating TransactionsEssentials into the Fabric3 SCA runtime. Nice work!

Atomikos in Skyway YouTube Video

Tuesday, December 1st, 2009

Check out this cool video to see how OEM customers are using Atomikos to build mission-critical applications with out-of-the-box reliability outside the application server…

Also, check out the Skyway toolset if you have a chance - it is pretty awsome :-)

Increase Reliability and Decrease Costs

Sunday, September 27th, 2009

This article on infoworld about last Summer’s outages is a typical illustration of how things can go wrong in a networked business world. With the current recession, cost cuts and commoditization of both software and hardware, the end result seems to be converging towards the state predicted by the late Jim Gray during his Turing Award speech in 1998:

“Cheap and buggy. Sometimes it will work, sometimes not, and nobody will really know why”.

Given the perspective of such a world, it seems like some precautions are justified. Since it can’t be repeated often enough, here is the Atomikos view on how to alleviate all this:

  • Use our transaction technology to avoid data inconsistency after a failure or crash. It acts like an insurance, really: you don’t need it when things are fine, but when things are turning bad you’re sure glad to have one!
  • Use queuing to your advantage. Avoid depending on the availability of a remote service by delaying requests until they can be performed (i.e., when the remote service is up).
  • Add virtually unlimited scalability while you’re at it…

The combination of technologies and techniques outlined here will increase your reliability while decreasing costs. You save on expenses by using commoditized hardware and software. You also save on man-hours of development because our products will allow you to focus on the happy path (failure handling is automated to a large part by our software). This significantly decreases the complexity of the workflow your developers have to code, maintain and debug. Less code in turn means less bugs, so this again increases reliability. Isn’t that beautiful?

Atomikos inside web containers

Monday, June 15th, 2009

Are you looking for an open source JTA/XA transaction manager for your web container?

Although web apps are not our mainstream business, some people do value Atomikos for their web apps.

See the jetty wiki for information on how to configure Atomikos within Jetty.

See this wiki page for configuration of Tomcat and Atomikos.

SpringSource: future of JEE with Atomikos?

Friday, June 5th, 2009

Check out this link: Red Hat Reacts to SpringSource Leadership and scroll down to the comments. Some (most?) of them seem to be acknowledging the Atomikos role in shaping the future of JEE…

Regards

Another success…

Wednesday, May 27th, 2009

A project that we have been contributing to at the Belgian Railways is about ready to go live. It concerns a tracking system for trains, providing detailed text messages about delays that are sent to subscribing passengers. The system was officially announced in the local press today.

Here is the official press announcement (Dutch only) or the English version

Transactions, SOA and Loose Coupling

Saturday, April 4th, 2009

Atomikos ExtremeTransactions supports web service transactions and also compensation-based TCC (Try-Confirm/Cancel) so your application/service is in control of what rollback or commit means.

According to more than one analyst we spoke to, web service transactions are supposedly incompatible with the loose coupling desired by SOA (Service Oriented Architecture), with the following being cited as the main reasons (read: problems):

  • Any ‘hidden’ interactions (like out-of-band two-phase commit) are mistakenly perceived as a violation of the loose coupling and contract-based SOA design principles.
  • As a result, a common problem is that a transactional service calls other services that are not transactional - and this going unnoticed. This becomes a problem when the desired outcome is rollback because those non-transactional services will commit their work right-away.

With Atomikos, these are all non-issues for the following reasons:

  • Both the sender and receiver in a transactional (web) service interaction can specify (and enforce) their transaction preferences/assumptions by means of our intermediaries (’handlers’ in JAX-WS terminology).
  • For instance, if a service (’A') expects another service (’B') to be transactional then it suffices to add our outgoing handler to the call chain at A. Thanks to the nature of our protocols, the calls to B will then carry the transaction context of A, and moreover the resulting SOAP return message from B will also indicate whether or not it has taken part in that transaction. If not, then the handler at A (inspecting the return message) will throw an exception to indicate the contract breach. So this guarantees the transaction contract being respected from A’s point of view.
  • How about B? There the solution is similar: if B wants incoming calls to be transactional, it suffices to add a handler to the incoming call chain at B. This handler can be configured with similar transaction demarcation preferences as in JEE (REQUIRED, REQUIRES_NEW, …).

So it is really simple to enforce a transactional contract among services in a SOA, thanks to Atomikos. Compare this to the popular alternative of modelling rollback in the service workflow (which at least doubles the workflow complexity and makes the whole SOA initiative more brittle and less agile) and it becomes clear why we say: use Atomikos and focus on the happy path! (TM)

If you would like to try this out in practice, just check out ExtremeTransactions for yourself.

Making JEE & SCRUM work with Atomikos

Saturday, March 28th, 2009

Sure you’ve heard about JEE… And if you know SCRUM then you probably also think that JEE is often counter-productive because of application-server issues.

Well, it doesn’t have to be like that: with Atomikos products and in combination with Spring and Hibernate, you can essentially ditch the application server and do everything inside a regular Java (JSE) virtual machine. The advantage: you can test what you deploy (nothing else is generated, nothing else is to be configured in XML files or anything). This actually redefines the meaning of test coverage: instead of testing your application classes, you can now also test most of the entire runtime as well, including the runtime jars. Add to that the tremendous improvement in turn-around time that Atomikos gives you, and you will never want to do agile in a different way again…