I just want to make sure that I understand this corectly. Refer to the diagram below...
If a JMS message is created and configured to "PERSISTENT" by Application A1, then, once the JMS provider (Weblogic) receives the message, the provider will gaurantee that the message is delivered. The persistence mode of a message is irrelevant until the message actuallys makes it to the provider because if the message fails in transit, I'm assuming that it is impossible for the provider to ever be aware of this condition, in which case the send() method will throw an exception to the client and the client can handle the situation.
The concept of "jms stores" only applies to messages defined as persistent. The JMS provider will accept a message from a client, determine the delivery mode, and write the message to the store if the message is defined as persistent. At some point in the future, the provider will attempt to deliver the message to its destination, and if the delivery fails, the provider is responsible for re-delivering the message again, since the message is defined as persistent. The provider does not consider the message delivered -- from the client -- until after it successfully writes the message to the store, and, the provider does not consider the message to be successfully consumed until after the message is delivered to the destination and successfully consumed, either from a return from onMessage() or commit on a JMS transacted session.
Look good?
Raffi
[ June 30, 2003: Message edited by: SAFROLE YUTANI ]