Vai al contenuto
LICENTIVO / INTEGRATION

Licenze software Java: attivazione ed esportazioni protette

Aggiungi l'attivazione della licenza e un'esportazione autorizzata a un'applicazione Java 17+. Mantieni un client per tutta la durata dell'applicazione e lascia che SDK gestisca credenziali e heartbeat.

Java 17+Aggiornato

1. Preparare il prodotto e la licenza

Inizia con una licenza con nodo bloccato e una normale funzionalità di esportazione. Aggiungi l'utilizzo misurato solo dopo il funzionamento del flusso di autorizzazione di base.

La quota conta le attivazioni correnti e viene restituita al rilascio. Le licenze ordinarie contano anche offline; quelle flottanti restituiscono la quota anche alla scadenza del lease.

  1. Copia l’ID prodotto da Console > Prodotti. Apri le chiavi pubbliche di firma dello stesso prodotto e inserisci tutte le coppie ID chiave/chiave pubblica nel codice di inizializzazione, sostituendo YOUR_PRODUCT_ID, YOUR_KEY_ID e YOUR_PUBLIC_KEY. L’integrazione rapida può generare il codice. Non serve un file di configurazione; l’SDK usa https://www.licentivo.com per impostazione predefinita.
  2. In Integrazione rapida, crea o seleziona un prodotto. Abilita una funzionalità denominata esportazione nella sua policy e prepara una licenza di prova.

2. Installare SDK

Verifica della pubblicazione in corso.

3. Tutelare un'esportazione reale

Inizializza l’SDK all’avvio o nel gestore di attivazione della tua applicazione. Leggi la chiave cliente dal modulo e passa ID prodotto e chiavi attendibili. Mantieni il client fino alla chiusura. Inserisci RunFeature nell’operazione reale e sostituisci l’esportazione con la tua funzione.

Java · Quickstart.java
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. Mantenere il client attivo fino all'arresto

Questo esempio di riga di comando esegue un'operazione e termina. In un'applicazione desktop, apri un client all'avvio, richiama la funzione di callback dall'azione di esportazione e chiudi il client solo alla chiusura dell'applicazione.

Dopo l'attivazione, gli avvii successivi possono lasciare vuoto LICENTIVO_LICENSE_KEY e ripristinare la credenziale privata con lo stesso utente e percorso cache. Conserva le credenziali nella directory application-data dell'utente. La chiusura ferma i heartbeat e restituisce i posti fluttuanti; l'uscita normale non dovrebbe disattivare un dispositivo con nodo bloccato.

L'accesso offline è disponibile solo quando la policy lo consente e la concessione firmata rimane valida. Una funzionalità scaduta o negata deve rimanere bloccata. Le operazioni a consumo richiedono una connessione di rete.

Per Swing o JavaFX, avvia l'autorizzazione dal thread dell'interfaccia utente e invia le notifiche in background al thread dell'interfaccia utente. Mantenere in vita il Cliente proprietario per tutta la durata della finestra; try-with-resources lo chiude all'uscita.

5. Esegui e verifica il risultato

Copia l’ID prodotto da Console > Prodotti. Apri le chiavi pubbliche di firma dello stesso prodotto e inserisci tutte le coppie ID chiave/chiave pubblica nel codice di inizializzazione, sostituendo YOUR_PRODUCT_ID, YOUR_KEY_ID e YOUR_PUBLIC_KEY. L’integrazione rapida può generare il codice. Non serve un file di configurazione; l’SDK usa https://www.licentivo.com per impostazione predefinita.

  1. Confermare che una licenza valida con accesso all'esportazione crei licensed-report.txt.
  2. Cancella LICENTIVO_LICENSE_KEY ed esegui nuovamente utilizzando lo stesso account utente: le credenziali salvate dovrebbero essere ripristinate.
  3. Imposta LICENTIVO_FEATURE su una funzionalità assente nella licenza e LICENTIVO_OUTPUT su un nuovo nome file. Il programma deve segnalare un rifiuto senza creare quel file.
  4. Testare un riavvio offline solo con una concessione firmata consentita e non scaduta. Non ignorare un controllo delle funzionalità non riuscito dopo un errore di aggiornamento in background.
Windows · PowerShell
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" Quickstart
Linux / macOS · Bash
javac -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" Quickstart

Problemi comuni di integrazione

Controlla ID prodotto, tutte le coppie ID chiave/chiave pubblica e la licenza del cliente. Le chiavi pubbliche appartengono al prodotto; licenze e credenziali dei dispositivi sono separate. Non distribuire chiavi di test o API Key di gestione.

Funzionalità negata, limite dispositivo raggiunto o licenza scaduta: controlla la licenza e la policy nella console, quindi mostra l'errore SDK al cliente. Un'autorizzazione fallita non deve richiamare la funzione di esportazione.

RunFeature controlla l'accesso alle funzionalità; la variante a consumo prenota e liquida l'utilizzo configurato. Utilizza un ID operazione stabile per un lavoro aziendale reale e controllane il risultato duraturo prima di ripristinare un lavoro interrotto.

Classe non trovata: mantenere entrambi fuori e SDK JAR sul percorso di classe di runtime. Windows utilizza un punto e virgola tra le voci; Linux e macOS utilizzano i due punti.