code: @Override
      public Exception mapCSITransactionRolledBackException
                      (EJSDeployedSupport s, CSITransactionRolledbackException ex)
                                      throws com.ibm.websphere.csi.CSIException
      {
          Throwable cause = null;
          Exception causeEx = null;
  
          // If the invoked method threw a System exception, or an Application
          // exception that was marked for rollback, or the application called
          // setRollBackOnly... then use the exception thrown by the method
          // as the cause of the rollback exception.
          if (s.exType == ExceptionType.UNCHECKED_EXCEPTION)
          {
              cause = s.ivException;
          }
  
          // Otherwise, use the cause of the CSIException as the cause,
          // unless it has no cause... then use the app exception.
          else
          {
              cause = ExceptionUtil.findCause(ex);
              if (cause == null)
                  cause = s.ivException;
          }
  
          // Because this will be mapped to an EJBException, and Throwable
          // is not supported on the constructor... insure the cause is
          // either an Exception, or wrap it in an Exception.
          if (cause != null)
          {
              if (cause instanceof Exception)
              {
                  causeEx = (Exception) cause;
              }
              else
              {
                  causeEx = new Exception("See nested Throwable", cause);
              }
          }
  
          // Now, map this CSIException... this will take care of getting
          // the stack set appropriately and will set the 'cause' on
          // Throwable, so getCause works.
          Exception mappedEx = mapCSIException(ex, causeEx, cause);
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
              Tr.debug(tc, "mapped exception = " + mappedEx);
  
          return mappedEx;
      }
docs: This method is specifically designed for use during EJSContainer
  postInvoke processing. It maps the internal exception indicating
  a rollback has occurred to the appropriate one for the interface
  (i.e. local, remote, business, etc). <p>