code: protected Connection getConnection(ConnectionRequestInfo connInfo) throws SQLException {
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled(); 
  
          if (isTraceOn && tc.isEntryEnabled()) 
              Tr.entry(this, tc, "getConnection", AdapterUtil.toString(connInfo));
  
          // Perform wrapper initialization in the common getConnection method.  Check for
          // connection errors on initialization. 
          WSJdbcConnection connWrapper;
          try // get a Connection
          {
              connWrapper = (WSJdbcConnection) cm.allocateConnection(mcf, connInfo);
          }
          // Allow AdapterUtil to convert ConnectionWaitTimeoutExceptions for us. 
          catch (ResourceException resX) {
              FFDCFilter.processException(
                                          resX,
                                          "com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection",
                                          "299",
                                          this);
              SQLException x = AdapterUtil.toSQLException(resX);
              if (isTraceOn && tc.isEntryEnabled()) 
                  Tr.exit(this, tc, "getConnection", "Exception");
              throw x;
          }
          try // to initialize the connection.
          {
              connWrapper.initialize(cm);
          } catch (SQLException sqlX) {
              FFDCFilter.processException(
                                          sqlX,
                                          "com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection",
                                          "280",
                                          this);
              sqlX = WSJdbcUtil.mapException(connWrapper, sqlX);
              if (isTraceOn && tc.isEntryEnabled()) 
                  Tr.exit(this, tc, "getConnection", sqlX);
              throw sqlX;
          }
  
          // create dynamic proxy for vendor interfaces
          Connection c = dsConfig.get().enableConnectionCasting
                          ? connWrapper.getCastableWrapper(vendorConnectionInterfaces)
                          : connWrapper;
  
          if (isTraceOn && tc.isEntryEnabled()) 
              Tr.exit(this, tc, "getConnection", c);
          return c;
      }
docs: This is the common getConnection implementation used by the other getConnection
  methods. This method handles the connection request to the CM and related exceptions,
  including the ConnectionWaitTimeoutException. Exceptions thrown by the CM are converted
  to SQLExceptions.
  
  @param connInfo useful information for requesting a Connection.
  
  @return the Connection
  
  @throws SQLException if an error occurs while obtaining a Connection.