We have chosen the web deployment model for our integrations so basically we are building a bunch of .war applications that we deploy. Within these .war application we have the light weight ESB embedded.
Today it's Mule's turn and I am building a proof of concept mirroring an existing integration we have on our old heavy weight platform. This integration uses two internal JMS queues to store intermediate messages in a route path.
I have setup a project using Mule 2.0.2 with its different transports and among them mule-transport-jms for the JMS part.
All is dandy when I run the application out-of-container with my unit tests where we use Jetty and ActiveMQ. No problem there.
I repackage my application without ActiveMQ and setup Mule to use WebSphere JMS connection factory instead.
Kaboom. I get a CWSIA0084E exception. Great there is an unique token to use for Google search (IBM got that part right), however I immediately got disappointed as even Google had a hard time to find any links - 6 hits.
At the end I found this IBM article from a IBM person:
Quoting from the article:
"So when you get this error, the problem isn't a bug in your code, it's your entire approach. In a nutshell, if you want to run a MessageListener in J2EE, don't implement a MessageListener, implement a (can you guess?) messsage-driven bean (the JMS kind, which implements MessageListener). And if you don't like using EJBs? Get used to it. MDBs work in J2EE; MessageListeners don't."
So I am just asking what planet are IBM WebSphere from? Please not always be so strict to the spec any other container I have worked with allowed you to work with JMS from any deployment model of choice.
Well that is -1 for Mule and -2 for WebSphere. Unfortunately WebSphere will prevail.