An application that runs inside a J2EE container can use JMS without knowing anything about the underlying JMS implementation (e.g., if it was using Solace, you could use MQ ins