code: public OrderingContext allocateOrderingContext() throws SIConnectionDroppedException, SIConnectionUnavailableException {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(tc, "allocateOrderingContext");
  
          // Synchronize on the state lock, and either re-use an existing
          // unused and open OrderingContext, or create a new one.
          OrderingContext oc = null;
          synchronized (stateLock) {
            while   (oc == null && !unusedOrderingContexts.isEmpty()) {
                oc = unusedOrderingContexts.remove(0);
                if (oc.isProxyConnectionClosed()) {
                    // Abandon this one.
                    oc = null;
                }
            }
            if (oc == null) {
              oc = coreConnection.createOrderingContext();
            }
            
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(tc, "allocateOrderingContext", oc);
          return oc;
      }
docs: Called by each session when it is created to get an ordering context for that session.
  
  @throws SIConnectionUnavailableException
  @throws SIConnectionDroppedException