Java SDK-Integrationshandbuch java-sdk-integration-guide

Experience Rollouts Java SDK ist eine Server-seitige Bibliothek, die Feature Flag-Daten lokal zwischenspeichert und Flags ohne einen synchronen API-Aufruf bei jeder Anfrage auswertet. In diesem Handbuch wird die aktuelle SDK (4.x) behandelt.

Voraussetzungen prerequisites

Stellen Sie vor der Integration der Java-SDK Folgendes sicher:

  • JDK 11 oder höher (ab SDK Version 3.0.0 erforderlich; frühere Versionen unterstützen JDK 8 oder höher)
  • Ein Maven-basiertes Build-System
  • Einen API-Schlüssel und Service-Token Client-ID aus Ihrem Adobe Developer Console-Projekt - kontaktieren Sie den Experience Rollouts-Support, um Ihre Client-ID zu ändern
  • Ihre Anwendungs-Client IDs) wurden in der Konsole „Experience Rollouts“ registriert. Siehe Onboarden Ihrer Anwendung

Hinzufügen der Maven-Abhängigkeit maven-dependency

Fügen Sie die Experience Rollouts Java SDK zur pom.xml Ihres Projekts hinzu:

<dependency>
  <groupId>com.adobe.cloudtech</groupId>
  <artifactId>fg-client-sdk</artifactId>
  <version>4.0.6</version>
</dependency>

SDK initialisieren initialize

Die SDK wird einmal beim Start der Anwendung mit FloodgateClient.createInstance() initialisiert. Die Methode verwendet ein FloodgateConfiguration, das Sie mit dem Konfigurations-Builder erstellen.

Implementieren des Service-Token-Callbacks service-token-callback

SDK verwendet eine Rückruffunktion, um zur Laufzeit ein neues Service-Token abzurufen:

private class FgConfigCallBack implements FGConfigBaseCallBack {

  @Override
  public String getIMSServiceToken() {
    // Fetch and return a valid service token
  }

  @Override
  public boolean isAnalyticsEnabled() {
    return false; // Set to true to enable analytics
  }
}

Erstellen des Konfigurationsobjekts configuration

Verwenden Sie den Konfigurations-Builder, um die SDK einzurichten:

FloodgateConfiguration configuration = FloodgateConfiguration.FloodgateConfigurationBuilder
    .aFloodgateConfiguration(
        FgEnv.PRD,                   // Use FgEnv.STG for Stage
        "<YOUR_API_KEY>",
        Set.of("<CLIENT_ID_1>", "<CLIENT_ID_2>"),
        new FgConfigCallBack(),
        CallType.ASYNC
    )
    .withRetryPolicy(retryPolicy)    // Optional: defaults to 5 retries, 10s interval
    .build();

Verwenden Sie FgEnv.STG für die Staging-Umgebung und FgEnv.PRD für die Produktion.

Erstellen der Client-Instanz client-instance

FloodgateClient fgClient = FloodgateClient.createInstance(configuration);

Funktions-Flags abrufen retrieve-features

Authentifizierter Benutzer authenticated-user

IMS-Zugriffstoken verwenden, um Feature Flags für den aktuellen Benutzer abzurufen:

GetFeatureRequest request = GetFeatureRequestBuilder
    .aGetFeatureRequest("<CLIENT_ID>")
    .withAccessToken("<USER_ACCESS_TOKEN>")
    .withContext(context)
    .build();

FeaturesResponse[] features = fgClient.getFeatures(request);

Anonymer Benutzer anonymous-user

Übergeben Sie bei nicht authentifizierten Benutzern eine Besucher-ID und Ihr Service-Token:

GetFeatureRequest request = GetFeatureRequestBuilder
    .aGetFeatureRequest("<CLIENT_ID>")
    .withServiceToken("<SERVICE_TOKEN>")
    .withVisitorId("<VISITOR_ID>")
    .withContext(context)
    .build();

FeaturesResponse[] features = fgClient.getFeatures(request);

Abrufen eines bestimmten Feature Flags oder einer Version specific-feature

So rufen Sie ein Feature Flag nach Schlüssel ab:

GetFeatureRequest request = GetFeatureRequestBuilder
    .aGetFeatureRequest("<CLIENT_ID>")
    .withAccessToken("<ACCESS_TOKEN>")
    .withFeatureKey("<FEATURE_KEY>")
    .build();

Um nach Versionsschlüssel abzurufen, ersetzen Sie .withFeatureKey() durch .withReleaseKey().

Überprüfen, ob eine Funktion aktiviert ist check-feature

boolean isEnabled = FloodgateClient.isFeatureEnabled(features, "MY_FEATURE_FLAG");

if (isEnabled) {
  // Serve the new experience
} else {
  // Serve the default experience
}

Für freigabebasierte Prüfungen:

boolean isEnabled = FloodgateClient.isFeatureEnabled(features, "MY_RELEASE", "MY_FEATURE_FLAG");

Cache-Verwaltung cache-management

Die SDK speichert Feature Flag-Daten zwischen und aktualisiert sie in einem Abrufintervall, das pro Anwendung in der Konsole festgelegt wurde. So führen Sie eine On-Demand-Cache-Aktualisierung durch:

fgClient.refreshClientCache("<CLIENT_ID>");

Nicht zwischenspeicherbare Clients non-cacheable

Für nicht zwischenspeicherbare Clients führt getFeature() jedes Mal einen Live-API-Aufruf durch. Die SDK führt die Hintergrundabfrage fort und wechselt zur Cache-basierten Bereitstellung, wenn der Client zwischenspeicherbar wird. Unterstützt ab SDK Version 0.8.

Konfigurationsoptionen configuration-options

Die folgenden optionalen Konfigurationsmethoden sind in Builder verfügbar:

Option
Methode
Beschreibung
Cache immer verwenden
.alwaysCache()
Umgeht das Zwischenspeichern der Antwort von der API; verwenden Sie für Flags ohne Zielgruppenregeln
Zwischenspeicherung deaktivieren
.neverCache()
Deaktiviert das Standard-Caching; nützlich für benutzerdefinierte Cache-Aktualisierungslogik
Benutzerdefinierter HTTP-Client
.withHttpClient(client)
Eigenen HTTP-Client verwenden
Benutzerdefinierter Executor
.withScheduledExecutorService(executor)
Eigener geplanter Executor für Hintergrundabfragen verwenden
Kontrollgruppe einschließen
.includeControlGroup()
Gibt Kontrollgruppendaten in der Funktionsantwort zurück.

Fehler beheben error-handling

getFeatures()-Aufrufe verarbeiten, um SDK-Ausnahmen abzufangen:

try {
  features = fgClient.getFeatures(request);
} catch (FgClientException e) {
  int statusCode = e.getStatusCode();
  // Handle error and serve default experience
} catch (FgInitException e) {
  e.printStackTrace();
}

Siehe auch see-also

recommendation-more-help
5ef5b561-a075-4016-8081-c8e1a5db9e99