1. Préparez le produit et la licence
Commencez avec une licence verrouillée par nœud et une fonctionnalité d'exportation ordinaire. Ajoutez une utilisation mesurée uniquement une fois que le flux d'autorisation de base fonctionne.
Le quota compte les activations actuelles et est rendu à leur libération. Les licences ordinaires restent comptées hors ligne ; les licences flottantes rendent aussi le quota à l’expiration du bail.
- Copiez l’ID du produit dans Console > Produits. Ouvrez les clés publiques de signature du même produit et collez toutes les paires ID de clé/clé publique dans le code d’initialisation, en remplaçant YOUR_PRODUCT_ID, YOUR_KEY_ID et YOUR_PUBLIC_KEY. L’intégration rapide peut générer ce code. Aucun fichier de configuration n’est nécessaire ; le SDK utilise https://www.licentivo.com par défaut.
- Dans Intégration rapide, créez ou sélectionnez un produit. Activez une fonctionnalité nommée export dans sa politique et préparez une licence de test.
2. Installez le SDK
Vérification de la publication en cours.
3. Protéger une véritable exportation
Initialisez le SDK au démarrage ou lors de l’activation de votre logiciel. Lisez la clé client dans votre formulaire et transmettez l’ID produit et les clés approuvées. Gardez le client jusqu’à la fermeture. Placez RunFeature au point d’entrée métier réel et remplacez l’export par votre fonction.
import licentivo.Client;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Map;
/** A single protected operation. Keep Client alive while your application runs. */
public final class Quickstart {
// BEGIN LICENTIVO PRODUCT
// Copy Product ID and all key ID/public key pairs from Console > Products > Signing public keys.
private static final String PRODUCT_ID = "YOUR_PRODUCT_ID";
private static final Map<String,String> TRUSTED_KEYS = Map.of("YOUR_KEY_ID", "YOUR_PUBLIC_KEY");
// END LICENTIVO PRODUCT
private static String setting(String name, String fallback) {
String value = System.getenv(name);
return value == null || value.isEmpty() ? fallback : value;
}
static void exportReport(String path) throws Exception {
// Replace this write with your existing, non-metered export operation.
Files.writeString(Path.of(path), "A report generated by the licensed application.\n");
}
public static void main(String[] args) {
// In a GUI, read the activation input. Later starts pass an empty key.
try (var client = Client.openProduct(PRODUCT_ID, TRUSTED_KEYS,
setting("LICENTIVO_LICENSE_KEY", ""), error -> System.err.println("Background verification: " + error.getMessage()))) {
String feature = setting("LICENTIVO_FEATURE", "export");
String path = setting("LICENTIVO_OUTPUT", "licensed-report.txt");
if (setting("LICENTIVO_METERED", "").equals("1"))
client.runMeteredFeature(feature, 1, setting("LICENTIVO_OPERATION_ID", ""), () -> exportReport(path));
else
client.runFeature(feature, () -> exportReport(path));
System.out.println("License OK: " + feature + " is available\nExport completed: " + path);
} catch (Exception error) {
System.err.println(error.getMessage());
System.exit(2);
}
}
}
4. Gardez le client en vie jusqu'à l'arrêt
Cet exemple de ligne de commande effectue une opération et se ferme. Dans une application de bureau, ouvrez un client au démarrage, appelez le rappel de fonctionnalité à partir de l'action d'exportation et fermez le client uniquement lorsque l'application se ferme.
Après l'activation, les démarrages ultérieurs peuvent laisser LICENTIVO_LICENSE_KEY vide et restaurer les informations d'identification privées sous le même utilisateur et le même emplacement de cache. Conservez ces informations d'identification dans le répertoire de données d'application utilisateur. La fermeture arrête les heartbeats et rend les sièges flottants ; la sortie normale ne doit pas désactiver un périphérique verrouillé par nœud.
L'accès hors ligne n'est disponible que lorsque la politique le permet et que la subvention signée reste valide. Une fonctionnalité expirée ou refusée doit rester bloquée. Les opérations mesurées nécessitent une connexion réseau.
Pour Swing ou JavaFX, démarrez l'autorisation à partir du thread d'interface utilisateur et rassemblez les notifications en arrière-plan sur le thread d'interface utilisateur. Maintenir le client propriétaire en vie pendant toute la durée de vie de la fenêtre ; try-with-resources le ferme à la sortie.
5. Exécutez et vérifiez le résultat
Copiez l’ID du produit dans Console > Produits. Ouvrez les clés publiques de signature du même produit et collez toutes les paires ID de clé/clé publique dans le code d’initialisation, en remplaçant YOUR_PRODUCT_ID, YOUR_KEY_ID et YOUR_PUBLIC_KEY. L’intégration rapide peut générer ce code. Aucun fichier de configuration n’est nécessaire ; le SDK utilise https://www.licentivo.com par défaut.
- Confirmez qu'une licence valide avec accès à l'exportation crée licensed-report.txt.
- Effacez LICENTIVO_LICENSE_KEY et réexécutez en utilisant le même compte utilisateur : les informations d'identification enregistrées doivent être restaurées.
- Définissez LICENTIVO_FEATURE sur une fonctionnalité absente de la licence et LICENTIVO_OUTPUT sur un nouveau nom de fichier. Le programme doit signaler un refus sans créer ce fichier.
- Testez un redémarrage hors ligne uniquement avec une autorisation signée autorisée et non expirée. Ne contournez pas une vérification de fonctionnalité ayant échoué après une erreur d’actualisation en arrière-plan.
javac -cp licentivo-sdk-0.11.6.jar -d out Quickstart.java
$env:LICENTIVO_LICENSE_KEY = 'YOUR_LICENSE_KEY'
java -cp "out;licentivo-sdk-0.11.6.jar" Quickstartjavac -cp licentivo-sdk-0.11.6.jar -d out Quickstart.java
LICENTIVO_LICENSE_KEY=YOUR_LICENSE_KEY java -cp "out:licentivo-sdk-0.11.6.jar" QuickstartProblèmes d'intégration courants
Vérifiez l’ID produit, toutes les paires ID de clé/clé publique et la licence du client. Les clés publiques appartiennent au produit ; licences et identifiants des appareils sont distincts. Ne distribuez pas de clés de test ou de clés API de gestion.
Fonctionnalité refusée, limite d'appareils atteinte ou licence expirée : inspectez la licence et la stratégie dans la console, puis affichez l'erreur SDK au client. Une autorisation échouée ne doit pas appeler la fonction d'exportation.
RunFeature vérifie l'accès aux fonctionnalités ; la variante mesurée réserve et règle l'utilisation configurée. Utilisez un ID d'opération stable par tâche métier réelle et inspectez son résultat durable avant de récupérer une tâche interrompue.
Classe introuvable : conservez les deux à l'écart ainsi que le SDK JAR sur le chemin de classe d'exécution. Windows utilise un point-virgule entre les entrées ; Linux et macOS utilisent deux points.