code: SITransaction getTransaction() throws JMSException {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(this, tc, "getTransaction");
          SITransaction transaction = null;
  
          try {
              transaction = jcaSession.getCurrentTransaction();
          } catch (javax.resource.spi.IllegalStateException ise) {
              // No FFDC code needed
              // d238447 FFDC review. Possible result of a race condition. No FFDC.
              throw (javax.jms.IllegalStateException) JmsErrorUtils.newThrowable(javax.jms.IllegalStateException.class,
                                                                                 "EXCEPTION_RECEIVED_CWSIA0053",
                                                                                 new Object[] { ise, "JmsSessionImpl.getTransaction (#1)" },
                                                                                 ise,
                                                                                 null, // null probeId = no FFDC.
                                                                                 this,
                                                                                 tc
                              );
          } catch (Exception e) {
              // No FFDC code needed
              // d238447 FFDC review. Need to consider:
              //   IllegalStateException - handled above.
              //   ResourceException, SIException, SIErrorException - generate FFDC.
              throw (JMSException) JmsErrorUtils.newThrowable(JMSException.class,
                                                              "EXCEPTION_RECEIVED_CWSIA0053",
                                                              new Object[] { e, "JmsSessionImpl.getTransaction (#2)" },
                                                              e,
                                                              "JmsSessionImpl.getTransaction#2",
                                                              this,
                                                              tc
                              );
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(this, tc, "getTransaction", transaction);
          return transaction;
      }
docs: Return the transaction that is currently in effect for this session.
  An auto-ack mode session has no transaction, and so returns null. In a
  managed environment (i.e. in WAS) the session may be locally transacted,
  or in auto-ack mode. It may also be configured to run under an XA global
  transaction, in which case the local transaction flag and ack mode flag
  are ignored. This means that an attempt to obtain a transaction from the
  jcaSession must always be made, as it knows the true transaction mode.
  
  @return current transaction object for this session (or null if one
  doesn't exist).