Step | Description |
1 | The trigger service for a transacted JMS trigger fails because of a ServiceException. Or, a web service operation invoked via a transacted SOAP-JMS trigger fails because of a ServiceException. |
2 | Integration Server rolls back the entire transaction and Integration Server recovers the message back to the JMS provider. The JMS provider marks the message as redelivered and increments the value of the JMSXDeliveryCount property in the JMS message. |
3 | If the JMS trigger is configured to use a document history database for exactly-once processing, Integration Server adds an entry with a status of “completed” for the message to the document history database. Because Integration Server does not acknowledge the message when it is rolled back, the JMS provider makes the message available for redelivery to the JMS trigger. However, a message that causes a trigger service to end because of a Service Exception typically does not process successfully upon redelivery. Integration Server adds the “completed” entry so that the message is treated as a duplicate when it is received from the JMS provider. The message is rejected after it is resent. If the JMS trigger does not use a document history database, Integration Server continues to receive and attempt message processing until the message processes successfully or the maximum delivery count has been met. The maximum delivery count determines the maximum number of time the JMS provider can deliver the message to the JMS trigger. It is controlled by the watt.server.jms.trigger.maxDeliveryCount property. |
4 | Integration Server suspends the JMS trigger. Important: If you disable or suspend a SOAP-JMS trigger that acts as a listener for one or more provider web service descriptors, Integration Server will not retrieve any messages for those web service descriptors until the trigger is enabled. |
5 | The JMS trigger remains suspended until one of the following occurs: You enable the trigger using the pub.trigger:enableJMSTriggers service. You enable the trigger using Integration Server Administrator. Integration Server restarts or the package containing the trigger reloads. (When Integration Server suspends a trigger because of a fatal error, Integration Server considers the change to be temporary. For more information about temporary vs. permanent state changes for triggers, see webMethods Integration Server Administrator’s Guide.) |