@SuppressWarnings("unchecked")
  protected void createOrRetrieveRegion() {
    // Create the RegionConfiguration
    RegionConfiguration configuration = createRegionConfiguration();
    configuration.setSessionExpirationCacheListener(true);

    // Attempt to retrieve the region
    // If it already exists, validate it
    // If it doesn't already exist, create it
    Region region = cache.getRegion(getSessionManager().getRegionName());
    if (region == null) {
      // Create the region
      region = createRegionUsingHelper(configuration);
      if (getSessionManager().getLogger().isDebugEnabled()) {
        getSessionManager().getLogger().debug("Created new session region: " + region);
      }
    } else {
      // Validate the existing region
      if (getSessionManager().getLogger().isDebugEnabled()) {
        getSessionManager().getLogger().debug("Retrieved existing session region: " + region);
      }
      validateRegionUsingRegionhelper(configuration, region);
    }

    // Set the session region
    sessionRegion = region;
  }
For peer-to-peer the backing cache *is* what's embedded in tomcat so it's always available

@return boolean indicating whether a backing cache is available
extensions/geode-modules/src/main/java/org/apache/geode/modules/session/catalina/PeerToPeerSessionCache.java