Class PreemptiveCachedAccessTokenProvider

All Implemented Interfaces:
Closeable, AutoCloseable, AccessTokenHealthProvider, AccessTokenProvider

public class PreemptiveCachedAccessTokenProvider extends DefaultCachedAccessTokenProvider
Caching AccessTokenProvider which preemptively attempts to update the cache in the background. The preemptive updates themselves run on a separate, dedicated thread. Updates are is not continuously scheduled, but (lazily) triggered by incoming requests for access-tokens.

This class is intended for uninterrupted operation in high-load scenarios, as it will avoid a (potentially) large number of threads blocking when the cache expires (and must be refreshed).

  • Field Details

    • logger

      protected static final org.slf4j.Logger logger
  • Constructor Details

    • PreemptiveCachedAccessTokenProvider

      public PreemptiveCachedAccessTokenProvider(AccessTokenProvider provider, long minimumTimeToLiveUnits, TimeUnit minimumTimeToLiveUnit, long refreshTimeoutUnits, TimeUnit refreshTimeoutUnit, long preemptiveTimeoutUnits, TimeUnit preemptiveTimeoutUnit, int refreshConstraintInPercent, boolean eager)
      Construct new instance.
      Parameters:
      provider - Access-token provider
      minimumTimeToLiveUnits - minimum time to live (left when returned by AbstractCachedAccessTokenProvider.getAccessToken(boolean)).
      minimumTimeToLiveUnit - minimum time to live unit
      refreshTimeoutUnits - cache refresh timeout
      refreshTimeoutUnit - cache refresh timeout unit
      preemptiveTimeoutUnits - preemptive timeout. This parameter is relative to time to live, i.e. "15 seconds before timeout, refresh time cached value".
      preemptiveTimeoutUnit - preemptive timeout unit
      refreshConstraintInPercent - constraint in percent, of a token's lifetime, before any preemptive refresh happens
      eager - preemptive refresh even if no traffic (schedule update)
    • PreemptiveCachedAccessTokenProvider

      public PreemptiveCachedAccessTokenProvider(AccessTokenProvider provider, long minimumTimeToLive, long refreshTimeout, long preemptiveRefresh, int refreshConstraintInPercent, boolean eager)
      Construct new instance.
      Parameters:
      provider - Access-token provider
      minimumTimeToLive - minimum time to live (left when returned by AbstractCachedAccessTokenProvider.getAccessToken(boolean)).
      refreshTimeout - cache refresh timeout unit (in milliseconds)
      preemptiveRefresh - preemptive refresh limit (in milliseconds). This parameter is relative to time to live, i.e. "15000 milliseconds before token is invalid, refresh cached value".
      refreshConstraintInPercent - constraint in percent, of a token's lifetime, before any preemptive refresh happens
      eager - preemptive refresh even if no traffic (schedule update)
    • PreemptiveCachedAccessTokenProvider

      public PreemptiveCachedAccessTokenProvider(AccessTokenProvider provider, long minimumTimeToLive, long refreshTimeout, long preemptiveRefresh, int refreshConstraintInPercent, boolean eager, ExecutorService executorService, boolean shutdownExecutorOnClose)
      Construct new instance, use a custom executor service.
      Parameters:
      provider - Access-token provider
      minimumTimeToLive - minimum time to live (left when returned by AbstractCachedAccessTokenProvider.getAccessToken(boolean)).
      refreshTimeout - cache refresh timeout unit (in milliseconds)
      preemptiveRefresh - preemptive timeout (in milliseconds). This parameter is relative to time to live, i.e. "15000 milliseconds before timeout, refresh time cached value".
      refreshConstraintInPercent - constraint in percent, of a token's lifetime, before any preemptive refresh happens
      eager - preemptive refresh even if no traffic (schedule update)
      executorService - executor service
      shutdownExecutorOnClose - Whether to shutdown the executor service on calls to close(..).
  • Method Details