code: @Override
      public int[] getThreadIdentitySecurityAndRRSSupport(String identifier) {
          WSManagedConnectionFactoryImpl mcf1;
          if (jdbcDriverSvc.loadFromApp()) {
              final boolean trace = TraceComponent.isAnyTracingEnabled();
  
              // data source class is loaded from thread context class loader
              if (identifier == null) {
                  ClassLoader tccl = priv.getContextClassLoader();
                  identifier = connectorSvc.getClassLoaderIdentifierService().getClassLoaderIdentifier(tccl);
                  // TODO better error handling when thread context class loader does not have an identifier
              }
              mcf1 = mcfPerClassLoader.get(identifier);
          } else
              mcf1 = mcf;
  
          DatabaseHelper dbHelper = mcf1.getHelper();
          return new int[] { dbHelper.getThreadIdentitySupport(), dbHelper.getThreadSecurity() ? 1 : 0, dbHelper.getRRSTransactional() ? 1 : 0 };
      }
docs: Indicates whether or not thread identity, sync-to-thread, and RRS transactions are supported.
  The result is a 3 element array, of which,
  <ul>
  <li>The first element indicates support for thread identity. 2=REQUIRED, 1=ALLOWED, 0=NOT ALLOWED.</li>
  <li>The second element indicates support for "synch to thread" for the
  allocateConnection, i.e., push an ACEE corresponding to the current java
  Subject on the native OS thread. 1=supported, 0=not supported.</li>
  <li>The third element indicates support for RRS transactions. 1=supported, 0=not supported.</li>
  </ul>
  
  Prerequisite: the invoker must hold a read or write lock on this instance.
  
  @param identifier identifier for the class loader from which to load vendor classes (for XA recovery path). Otherwise, null.
  @return boolean array indicating whether or not each of the aforementioned capabilities are supported.