Árvore de páginas

Para conhecer mais de nossos apps mobile disponíveis, acesse: TOTVS Mobile

Para saber mais sobre funcionamento e Licenciamento Progress acesse: Licenciamento Progress

01. OBJETIVO

O objetivo dessa implementação é permitir a escalabilidade dos appservers dentro do Datasul.


02. CADASTRO DE BROKERS

Ao selecionar a função Parâmetros Foundation, e a Pasta Servidores é possível realizar o cadastro do aplicativo, alias e servidor de aplicação.

Conforme documentação: Parâmetros Foundation


03. REQUISITOS NECESSÁRIOS

Para implementar a nova funcionalidade devemos cadastrar os seguintes requisitos:

  1. Para acesso via apps com código de licenciamento (JWT com acesso ao sistema) devemos utilizar o atributo abaixo:

    x-totvs-appcode:  HEADER HTTP com o código JWT que trará a identificação do totvs-appcode utilizado para encontrar o registro do broker relacionado a esse código. Para saber mais sobre o código de aplicativos acesse TOTVS Mobile ou entre em contato com seu ESN


Obs.: Caso o app não possua código de licenciamento será executado no broker default e não é necessário cadastrar um broker para o app.


      2. Para os demais acessos é possível definir um alias para direcionar requisições à determinados fluxos de negócio, para isso deve-se utilizar:

x-totvs-server-alias: HEADER HTTP Alias definido na tela de parâmetros do Foundation (cadastro de brokers). Esse parâmetro é utilizado por áreas de negócio e possíveis implementações de clientes que desejem direcionar as requests para um broker (appserver) específico evitando concorrência com o broker do ERP.


Obs.: A parir da release 12.1.34 o produto fará a migração do appserver atual para um registro de broker default, ou seja, Aplicativo e Alias serão definidos como "*".

É possível identificar também como estão sendo carregadas as requisições através do log do TomCat, pesquisando pelo termo "Buscando conexao atual." dentro do arquivo de log, conforme imagem:



04. BALANCEAMENTO DOS BROKERS

Para arquitetura do broker escalável utilizamos o balanceamento simples, uma vez cadastrado mais do que um servidor, as requisições serão direcionadas alternadamente entre os servidores cadastrados.


05. EXEMPLO DE COMO FAZER USO DO APLICATIVO E ALIAS PARA CHAMADAS REST

01. Criando lista de Servidores

No programa BTB962AA (Parâmetros Foundation) criar a lista de servidores na aba Servidores.

Na imagem abaixo foram criados alguns servidores, variando em servidores que utilizam Aplicativos ou não, e utilizam Alias ou não:

    



 

OBS:

Devido a restrições técnicas, quando se faz manutenção da lista de servidores de aplicação no BTB962AA essa lista não é imediatamente atualizada no Tomcat (Java).

Esta atualização é realizada a cada 3 minutos por instância.







02. Executando requisições REST 

Para simular as chamadas de requisições REST, pode-se fazer uso da ferramenta POSTMAN. Abaixo segue um exemplo de como fazer:


Token JWT


  • No exemplo ao lado é criada inicialmente uma requisição api/acceskey com médoto POST para criar o Token JWT que será utilizado posteriormente em outra requisição;
  • Utilize na BaseURL da requisição o servidor e porta, ou também pode-se fazer uso da funcionalidade de Envioroment do Postman para criar variáveis para cada ambiente;
  • As requisições seguem o padrão de autorização Basic Auth;



Informações enviadas no Header


  • Após criado o Token JWT, pode-se criar uma requisição REST. No exemplo, foi utilizada uma chamada ao endpoint timer;
  • Na aba Headers, pode-se informar as chaves x-totvs-appcode (Aplicativo), x-totvs-server-alias (Alias) e companyId (Código da empresa) que são utilizadas para selecionar o broker cadastrado no programa BTB962AA;
  • O valor que deve ser inserido na chave x-totvs-appcode é o Token JWT gerado anteriormente. Caso seja informado um conteúdo em plain-text, pode ocorrer erros na conversão deste token e consequentemente inconsistências na conexão com o AppServer. 


DICA:

No Hedears pode-se escolher variações de cabeçalho enviar.

Por exemplo, pode optar por não enviar o Alias e enviar apenas o Aplicativo. Assim no produto, no cabeçalho não enviado será interpretado como * (todos). Ou seja, o cabeçalho que não for enviado será identificado como *.


A partir da versão 12.1.2311, ao enviar somente o Alias (sem informar o Aplicativo) e esse Alias não estiver cadastrado, será escalado para o Alias default *.



Informações enviadas no Body


  • Na opção Body é criada a conexão com o Aplicativo cadastrado no programa BTB962AA e no exemplo, é simulado uma execução via Mingle.


03. Resultado do envio de requisições REST 

No log do Tomcat é possível ver as informações de um dos servidores cadastrados, por exemplo:

    • companyId=10,
    • userName=super,
    • xTotvsApp=5203 (resgatado a partir da decodificação do Token JWT),
    •  xTotvsAlias=mariscal
    • AppServer:/marical.jv01.local:5162/gales8180
    • Requisição: /dts/datasul-rest/resources/prg/utp/v1/timer/1

A seguir é apresentado o trecho do log onde é possível visualizar essas informações:

22-Nov-2021 18:14:38.592 INFO [datasul-exec-80] com.totvs.framework.rest.connector.APIDatasulConnector.processRequest TOTVS-REST API-DATASUL: Conectando appserver
22-Nov-2021 18:14:38.592 INFO [datasul-exec-80] com.totvs.framework.progress.connector.ProgressConnectionManager.getConnection Buscando conexao atual. companyId=10, userName=super, xTotvsApp=5203,
xTotvsAlias=mariscal, dbHistId=null, programName=utp/api/v1/timer, programType=api, appServer=null 22-Nov-2021 18:14:38.592 INFO [datasul-exec-80] com.totvs.framework.progress.connector.ProgressConnectionManager.createConnection TOTVS-PROGRESS: Builded URL connection: AppServer://mariscal.jv01.local:5162/gales8180 22-Nov-2021 18:14:38.592 SEVERE [datasul-exec-80] com.totvs.framework.progress.connector.ProgressConnectionManager.createConnection Arquivo .jar totvs-fwk-log nao encontrada na /lib do Tomcat 22-Nov-2021 18:14:38.596 INFO [datasul-exec-80] com.totvs.framework.progress.connector.ProgressConnectionManager.getConnection Realizada conexao em (4ms) 22-Nov-2021 18:14:37.763 INFO [datasul-exec-80] com.totvs.sso.SSOFilter.verifyEndpointAccess verifyEndpointAccess: 131 ms 22-Nov-2021 18:14:37.763 FINE [datasul-exec-80] com.totvs.framework.dts.DtsFilter.doFilter DTS-FILTER: /dts/datasul-rest/resources/prg/utp/v1/timer/1 22-Nov-2021 18:14:37.764 FINE [datasul-exec-80] com.totvs.framework.rest.controller.APIDatasulService.get DATASUL-REST (API GET): http://gales:8180/dts/datasul-rest/resources/prg/utp/v1/timer/1 22-Nov-2021 18:14:37.859 FINE [datasul-exec-84] com.totvs.framework.license.LicenseServerSocket.colocaThreadParaDormir TOTVS-FWK-LS: . para super



REFORÇANDO!

Toda vez que um servidor passar por alteração no programa "Parâmetros do Foundation - BTB962AA", leva-se 3 minutos para essa configuração ser aplicada no sistema.