Integration Server 10.7 | Web Services Developer’s Guide | Using SOAP over JMS with Web Services | Using SOAP/JMS with Web Services with Transactions | Guidelines for Using Transactions with SOAP/JMS and Consumer Web Service Descriptors
 
Guidelines for Using Transactions with SOAP/JMS and Consumer Web Service Descriptors
If you want to send SOAP/JMS messages as part of a transaction, keep the following guidelines in mind:
*The WmART package must be installed and enabled.
*The consumer web service endpoint alias assigned to the JMS binder must use a transacted JMS connection alias. A JMS connection alias is considered to be transacted when it has a transaction type of XA_TRANSACTION or LOCAL_TRANSACTION. For information about creating a JMS connection alias, see the section Creating a JMS Connection Alias in the webMethods Integration Server Administrator’s Guide. Creating a JMS Connection Alias.
*SOAP/JMS messages can be sent as part of a transaction for operations with any message exchange pattern (MEP). However, if you want to use a transaction to send a SOAP/JMS message for an In-Out MEP, you must send the request asynchronously. For more information, see Asynchronously Invoking an In-Out Operation. Keep in mind that Integration Server offers limited support for Robust-In-Only operations and asynchronous In-Out operations. For more information, see Asynchronously Invoking an In-Out Operation and Consumer Support for Robust In-Only Operations with SOAP/JMS Bindings.
*The client side queue cannot be used when SOAP/JMS messages are sent as part of a transaction. Do not enable the client side queue for a JMS binder if messages will be sent as part of a transaction.
*SOAP/JMS messages can be sent as part of an implicit transaction or an explicit transaction.
*Integration Server starts an explicit transaction when the pub.art.transaction:startTransaction service executes. The explicit transaction ends when the pub.art.transaction:commitTransaction service or the pub.art.transaction:rollbackTransaction service executes. You can also allow Integration Server to commit or roll back the transaction implicitly based on the success or failure of the service.
*Integration Server starts an implicit transaction when Integration Server sends the SOAP/JMS message using a transacted JMS connection alias. Integration Server only starts an implicit transaction if another service has not yet started a transaction. Integration Server implicitly commits the transaction when the top-level service succeeds. Integration Server implicitly rolls back the transaction if the top-level service fails.