Ir al contenido
LICENTIVO / INTEGRATION

Licencias de software Java: activación y exportaciones protegidas

Agregue activación de licencia y una exportación autorizada a una aplicación Java 17+. Mantenga un cliente durante toda la vida útil de la aplicación y deje que SDK administre las credenciales y los latidos.

Java 17+Actualizado

1. Prepare el producto y la licencia.

Comience con una licencia de nodo bloqueado y una función de exportación normal. Agregue el uso medido solo después de que funcione el flujo de autorización básico.

La cuota cuenta las activaciones actuales y se recupera al liberarlas. Las licencias normales cuentan sin conexión; las flotantes también liberan cuota al vencer su arrendamiento.

  1. Copia el ID del producto en Consola > Productos. Abre las claves públicas de firma del mismo producto y pega todos los pares ID de clave/clave pública en el código de inicialización, sustituyendo YOUR_PRODUCT_ID, YOUR_KEY_ID y YOUR_PUBLIC_KEY. La integración rápida puede generar este código. No hace falta un archivo de configuración; el SDK usa https://www.licentivo.com de forma predeterminada.
  2. En Integración rápida, cree o seleccione un producto. Habilite una función denominada exportación en su política y prepare una licencia de prueba.

2. Instale el SDK

La publicación se está verificando.

3. Proteger una exportación real

Inicializa el SDK al iniciar o activar tu programa. Lee la clave del cliente en el formulario y pasa el ID del producto y las claves de confianza. Mantén el cliente hasta cerrar. Coloca RunFeature en la operación real y sustituye la exportación por tu propia función.

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. Mantener vivo al cliente hasta el cierre.

Este ejemplo de línea de comandos realiza una operación y sale. En una aplicación de escritorio, abra un cliente al inicio, invoque la devolución de llamada de la función desde la acción de exportación y cierre el cliente solo cuando se cierre la aplicación.

Después de la activación, los inicios posteriores pueden dejar LICENTIVO_LICENSE_KEY vacío y restaurar la credencial privada con el mismo usuario y ubicación de caché. Mantenga esa credencial en el directorio de datos de la aplicación del usuario. El cierre detiene los heartbeats y devuelve los asientos flotantes; La salida normal no debe desactivar un dispositivo con nodo bloqueado.

El acceso sin conexión está disponible solo cuando la política lo permite y la concesión firmada sigue siendo válida. Una función caducada o denegada debe permanecer bloqueada. Las operaciones medidas requieren una conexión de red.

Para Swing o JavaFX, inicie la autorización desde el hilo de la interfaz de usuario y envíe las notificaciones en segundo plano al hilo de la interfaz de usuario. Mantener vivo al Cliente propietario durante toda la vida útil de la ventana; try-with-resources lo cierra al salir.

5. Ejecute y verifique el resultado.

Copia el ID del producto en Consola > Productos. Abre las claves públicas de firma del mismo producto y pega todos los pares ID de clave/clave pública en el código de inicialización, sustituyendo YOUR_PRODUCT_ID, YOUR_KEY_ID y YOUR_PUBLIC_KEY. La integración rápida puede generar este código. No hace falta un archivo de configuración; el SDK usa https://www.licentivo.com de forma predeterminada.

  1. Confirme que una licencia válida con acceso de exportación crea licensed-report.txt.
  2. Borre LICENTIVO_LICENSE_KEY y vuelva a ejecutarlo con la misma cuenta de usuario: la credencial guardada debería restaurarse.
  3. Establezca LICENTIVO_FEATURE en una característica ausente de la licencia y LICENTIVO_OUTPUT en un nombre de archivo nuevo. El programa debe informar una denegación sin crear ese archivo.
  4. Pruebe un reinicio sin conexión solo con una concesión firmada permitida y vigente. No omita una verificación de función fallida después de un error de actualización en segundo plano.
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

Problemas comunes de integración

Comprueba el ID del producto, todos los pares ID de clave/clave pública y la licencia del cliente. Las claves públicas pertenecen al producto; las licencias y credenciales de dispositivo son independientes. No distribuyas claves de prueba ni API Keys de gestión.

Función denegada, límite de dispositivo alcanzado o licencia vencida: inspeccione la licencia y la política en la consola, luego muestre el error SDK al cliente. Una autorización fallida no debe llamar a la función de exportación.

RunFeature comprueba el acceso a las funciones; la variante medida reserva y liquida el uso configurado. Utilice una identificación de operación estable para cada trabajo comercial real e inspeccione su resultado duradero antes de recuperar un trabajo interrumpido.

Clase no encontrada: mantenga fuera y el SDK JAR en el classpath de tiempo de ejecución. Windows utiliza un punto y coma entre las entradas; Linux y macOS utilizan dos puntos.