Ir para o conteúdo
LICENTIVO / INTEGRATION

Licenciamento de software Java: ativação e exportações protegidas

Adicione ativação de licença e uma exportação autorizada para um aplicativo Java 17+. Mantenha um cliente durante a vida útil do aplicativo e deixe o SDK gerenciar credenciais e pulsações.

Java 17+Atualizado

1. Prepare o produto e licencie

Comece com uma licença bloqueada por nó e um recurso de exportação comum. Adicione o uso medido somente depois que o fluxo de autorização básico funcionar.

A cota conta as ativações atuais e retorna ao liberá-las. Licenças comuns continuam contando offline; licenças flutuantes também devolvem a cota quando a concessão expira.

  1. Copie o ID do produto em Console > Produtos. Abra as chaves públicas de assinatura do mesmo produto e insira todos os pares ID da chave/chave pública no código de inicialização, substituindo YOUR_PRODUCT_ID, YOUR_KEY_ID e YOUR_PUBLIC_KEY. A integração rápida pode gerar esse código. Não é necessário um arquivo de configuração; o SDK usa https://www.licentivo.com por padrão.
  2. Em Integração rápida, crie ou selecione um produto. Habilite um recurso denominado exportação em sua política e prepare uma licença de teste.

2. Instale o SDK

A publicação está sendo verificada.

3. Proteja uma exportação real

Inicialize o SDK ao iniciar ou ativar seu software. Leia a chave do cliente no formulário e passe o ID do produto e as chaves confiáveis. Mantenha o cliente até o encerramento. Coloque RunFeature na operação real e substitua a exportação pela sua função.

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. Mantenha o cliente ativo até o desligamento

Este exemplo de linha de comando executa uma operação e sai. Em um aplicativo de desktop, abra um cliente na inicialização, invoque o retorno de chamada do recurso da ação de exportação e feche o cliente somente quando o aplicativo for encerrado.

Após a ativação, iniciações posteriores podem deixar LICENTIVO_LICENSE_KEY vazio e restaurar a credencial privada no mesmo usuário e local de cache. Mantenha essa credencial no diretório application-data do usuário. O fechamento interrompe os heartbeats e devolve os assentos flutuantes; a saída normal não deve desativar um dispositivo bloqueado por nó.

O acesso off-line está disponível somente quando a política permitir e a concessão assinada permanecer válida. Um recurso expirado ou negado deve permanecer bloqueado. As operações medidas requerem uma conexão de rede.

Para Swing ou JavaFX, inicie a autorização no thread da UI e organize notificações em segundo plano no thread da UI. Manter o Cliente proprietário ativo durante toda a vida útil da janela; try-with-resources fecha na saída.

5. Execute e verifique o resultado

Copie o ID do produto em Console > Produtos. Abra as chaves públicas de assinatura do mesmo produto e insira todos os pares ID da chave/chave pública no código de inicialização, substituindo YOUR_PRODUCT_ID, YOUR_KEY_ID e YOUR_PUBLIC_KEY. A integração rápida pode gerar esse código. Não é necessário um arquivo de configuração; o SDK usa https://www.licentivo.com por padrão.

  1. Confirme se uma licença válida com acesso de exportação cria licensed-report.txt.
  2. Limpe LICENTIVO_LICENSE_KEY e execute novamente usando a mesma conta de usuário: a credencial salva deve ser restaurada.
  3. Defina LICENTIVO_FEATURE como um recurso ausente da licença e LICENTIVO_OUTPUT como um novo nome de arquivo. O programa deve reportar uma negação sem criar esse arquivo.
  4. Teste uma reinicialização offline apenas com uma concessão assinada permitida e não expirada. Não ignore uma verificação de recurso com falha após um erro de atualização em 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 comuns de integração

Confira o ID do produto, todos os pares ID da chave/chave pública e a licença do cliente. As chaves públicas pertencem ao produto; licenças e credenciais de dispositivos são separadas. Não distribua chaves de teste ou API Keys de gerenciamento.

Recurso negado, limite de dispositivo atingido ou licença expirada: inspecione a licença e a política no console e mostre o erro SDK ao cliente. Uma autorização com falha não deve chamar a função de exportação.

RunFeature verifica o acesso ao recurso; a variante medida reserva e liquida o uso configurado. Use um ID de operação estável por trabalho comercial real e inspecione seu resultado durável antes de recuperar um trabalho interrompido.

Classe não encontrada: mantenha ambos fora e SDK JAR no caminho de classe do tempo de execução. O Windows usa ponto e vírgula entre as entradas; Linux e macOS usam dois pontos.