Other transaction support

The IMS™ TM resource adapter also supports local transaction, one-phase commit processing, non-global transaction processing, and conversational transaction processing in a global transaction scope.

Local transaction

The Java™ EE Connection Architecture defines the javax.resource.cci.LocalTransaction interface for a resource manager, rather than a transaction manager, to coordinate a transaction locally. However, the IMS TM resource adapter supports only transaction coordination with a transaction manager. Thus, the IMS TM resource adapter does not support the javax.resource.cci.LocalTransaction interface. If you call the IMSConnection.getLocalTransaction() method you will get a NotSupportedException. To use transaction support with the IMS TM resource adapter, you need to either use the JTA transaction interface, or set an appropriate transaction attribute in the deployment descriptor in your application. See the topic on global transaction support in client applications for more information.

One-phase commit processing

The IMS TM resource adapter supports one-phase commit optimization with a transaction manager. As a result, if all changes inside a transaction scope belong to the same IMS resource, the transaction manager might perform one-phase-commit optimization such that the transaction manager sends the phase two commit request directly to the resource manager for committing the changes without sending the phase one prepare request.

Non-global transaction processing

If no global transaction processing is used in the application (for example, when the transaction attribute is set to TX_NOTSUPPORTED), all non-global transaction processing uses "Sync-On-Return" (OTMA SyncLevel=None). By the time the IMS transaction is committed, the output has been returned to the client.

Conversational transaction processing in global transaction scope

IMS uses a conversational program to divide processing into a connected series of client-to-program-to-client interactions (also called iterations). Each iteration is a type of IMS conversational transaction. Conversational processing is used when one transaction contains several parts. Each part that comprises one large transaction is separately committed or rolled back.

You can run a conversational transaction in the global transaction scope if:
  • Each iteration is run under the same transaction level. For example, if the first iteration is processed with a global transaction scope, then all the subsequent iterations in that IMS conversational transaction must be processed at a global transaction level. If you issue the second iteration with no transaction scope, IMS OTMA reports an error.
  • Each iteration must be completed with a commit or rollback call before issuing the next iteration in the IMS conversation. You cannot group multiple iterations in a single global transaction scope.