code: @Override
      public final synchronized void commit(ContainerTx tx)
                      throws RemoteException
      {
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled();
          if (isTraceOn && tc.isEntryEnabled())
              Tr.entry(tc, "commit: " + getStateName(state),
                       new Object[] { tx, currentTx }); //123293
  
          if (removed) {
              if (isTraceOn && tc.isEntryEnabled())
                  Tr.exit(tc, "commit: removed");
              return;
          }
  
          switch (state)
          {
              case COMMITTING_OUTSIDE_METHOD:
                  setState(METHOD_READY);
                  break;
  
              case COMMITTING_IN_METHOD:
                  setState(IN_METHOD);
                  break;
  
              default:
                  if (isTraceOn && tc.isDebugEnabled()) // d144064
                      Tr.debug(tc, "invalid state: " + state); //123293
                  throw new InvalidBeanOStateException(StateStrs[state],
                                  "COMMITTING_IN_METHOD | " +
                                                  "COMMITTING_OUTSIDE_METHOD");
          }
  
          if (tx.ivRemoveBeanO == this)
          {
              completeRemoveMethod(tx); // d647928
          }
  
          // currentTx is now reset in atCommit/atRollback AFTER the final pin
          // is undone.                                                      d258770
          // currentTx = null;                                            // PQ99986
  
          if (isTraceOn && tc.isEntryEnabled())
              Tr.exit(tc, "commit: " + getStateName(state));
      }
docs: Inform this <code>SessionBeanO</code> that the transaction
  it was enlisted with has committed. <p>