Hi all. I studying Jasmine example from Mastering EJB book. there is a MDB called OrderProcessorBean, the onMessage( ) method of this bean contains a comment from the authors which says : " At this point, we could perform lots of tasks: A call-out to a credit card company (perhaps through web services) to check the user's credit card rating and perform a debit. " assume the following scenario : we have a session bean that will send a message to the queue that OrderProcessorBean is listening to. this MDB will use the information contained in the message to invoke a web service that will try to check the credit card of the user. maybe the credit card is invalid, how can the session bean knows that ? I think it is impossible since the messaging is asynchronous, there is no way that will allow the session bean to know this ... someone shed some light here ? thanks.
You are correct that if the session bean needs to know the response, then using an MDB to charge the card will not work. However, I just ordered an LCD (finally found a decent stackable coupon for the Dell 20.1" yay!) monitor, but my card won't be charged until the order is processed and and ready to ship. If it fails, I assume they'll cancel the order and send me a nasty email. The point is that sometimes immediacy isn't necessary.
Given that you'd probably at least verify the card and reserve the charge against it, this may be a bad example, but it's still valid.