What I meant was, that suppose a sender and receiver are two different, but JMS-compliant implementations.
They are compatible with each other only on the interfaces level - both use JMS, and one send and the other receives messages.
So, the producer will send a, say, TextMessage, and the bytes that traverse the network are in a specific format, specific to this implementation.
The receiver, being a different vendor implementation, may use a completely different implementation class for TextMessage, and also there may be many differences on the network level - I mean, the bytes that constitute the TextMessage for the sender may mean nothing but garbage to the receiver.
Originally posted by Raf Szczypiorski:
The question is: are JMS implementations able to communicate in this way, or both host A (producer) and host B (consumer) would have to use the same JMS implementation, say both running Glassfish, so that the marshalling and unmarshalling are compatible?
What I was asking about (and failed to be specific enough) is that A is using one JMS server to produce messages, and B is using another (different) server to consume them.
If I code a Session EJB and deploy it to Glassfish. And I want to send a message to another Session EJB which is deployed on Websphere. This is fine. What do I need?
I need the client API for Websphere's MQ Series and the name of the message queue which is set up in Websphere. I code the Session EJB in Glassfish to use the JMS API to send a TextMessage to the message queue in Websphere.
A provider must be prepared to accept, from a client, a message whose
implementation is not one of its own. A message with a �foreign�
implementation may not be handled as efficiently as a provider �s own
implementation; however, it must be handled.
Does this mean that I can send a message to Websphere with Glassfish, and it will just work?