Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Button
TextoVoltar
Linkhttps://tdn.totvs.com/pages/viewpage.action?pageId=619749959

Índice
maxLevel4

Informações

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 / Empresas do Foundation (html.companies) (a partir da release 12.1.2411).


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


Informações
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.


Informações
Obs.: A parir partir 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

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

01.

Criando lista de Servidores

No programa BTB962AA (Parâmetros Foundation) / Empresas do Foundation (html.companies) 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:


 

Image Modified Image Added


 
 
Nota
titleOBS:

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:


Informações
iconfalse
titleToken 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
iconfalse
titleInformaçõ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.23072311, ao enviar somente o Alias (sem informar o Aplicativo) e esse Alias não estiver cadastrado, será escalado para o Alias default *.



Informações
iconfalse
titleInformações enviadas no Body


  • Na opção Body é criada a conexão com o Aplicativo cadastrado no programa BTB962AA e  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:

Informações
iconfalse
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



Card documentos
InformacaoToda vez que um servidor passar por alteração no programa "Parâmetros do Foundation - BTB962AA / Empresas do Foundation (html.companies)", leva-se 3 minutos para essa configuração ser aplicada no sistema.
TituloREFORÇANDO!




HTML
<style>

.custom-button {
	position: absolute;
    top: 50px;
    right: 35px;
}

.page-metadata div {
	float: none !important;
	margin: 4px 0 0 0 !important;
}

<!********TIRA O MENU LATERAL*********-->
div.theme-default .ia-splitter #main {
    margin-left: 0px;
}
.ia-fixed-sidebar, .ia-splitter-left {
    display: none;
}
#main {
    padding-left: 10px;
    padding-right: 10px;
    overflow-x: hidden;
}

.aui-header-primary .aui-nav,  .aui-page-panel {
    margin-left: 0px !important;
}
.aui-header-primary .aui-nav {
    margin-left: 0px !important;
}

.aui-tabs.horizontal-tabs>.tabs-menu>.menu-item.active-tab a::after { 
	background: #FF9900; !important 
}

.menu-item.active-tab { 
	border-bottom: none !important; 
}
<!****************************-->

</style>