3.3.5 Restrictions on Transactions

The following restrictions apply to Oracle Tuxedo CORBA transactions:

  • A CORBA object in the Oracle Tuxedo system must have the same transaction context when it returns from a method invocation that it had when the method was invoked.
  • A CORBA object can be infected by only one transaction at a time. If an invocation tries to infect an already infected object, a CORBA::INVALID_TRANSACTION exception is returned.
  • If a CORBA object is infected with a transaction and a nontransactional request is made on it, a CORBA::OBJ_ADAPTER exception is raised.
  • If the application begins a transaction in Server::initialize(), it must either commit or roll back the transaction before returning from the method. If the application does not, the TP Framework shuts down the server. This is because the application has no predictable way of regaining control after completing the Server::initialize method.
  • If a CORBA object is infected by a transaction and with an activation policy of transaction, and if the reason code passed to the method is either DR_TRANS_COMMITTING or DR_TRANS_ABORTED, no invocation on any CORBA object can be done from within the Tobj_ServantBase::deactivate_object method. Such an invocation results in a CORBA::BAD_INV_ORDER exception.