Balanceamento entre Clientes HTTP e servidor TOTVS | Application Server
Este broker é utilizado para balanceamento de aplicações web que necessitam de controle de sessão. Como por exemplo o portal Protheus e o SmartClient HTML/WebApp.
Este broker não é voltado para aplicações web stateless, como por exemplo web services. Especificamente, este broker não funciona para balancear consumo de web services fornecidos pelo TOTVS | Application Server em uso com o ERP Protheus. Para este caso de uso utilizar o Broker para Web Services.
Apenas um arquivo de configuração é necessário para o funcionamento deste broker, conforme exemplo abaixo.
Exemplo de configuração.
[GENERAL] ; configuracao recomendada para gravacao de log ConsoleLog=1 ConsoleLogDate = 0 [BALANCE_HTTP] ; porta que atende o Client HTTP LOCAL_SERVER_PORT = 4000 ; hostname ou endereço ip, e porta TCP onde os servidores Application Server ERP aceitam conexões HTTP REMOTE_SERVER_01 = 172.16.106.31 5001 REMOTE_SERVER_02 = 172.16.106.31 5002 ; etc ; esta chave aceita letras e números para identificar servidores, ; por exemplo REMOTE_SERVER_0A, REMOTE_SERVER_XY, etc, e as chaves ; podem estar em qualquer ordem ; nome do serviço Windows, caso seja utilizado ; (não pode conter espaços) SERVICE_NAME = TOTVS_BROKER_SH_XYZ ; opcional: "display name" do serviço Windows SERVICE_DISPLAY_NAME = "BROKER SERVICE" ; IMPORTANTE ; as linhas que contem um nome de chave não devem conter um ";" de comentário ; dependendo do caso, as linhas com chave e ";" podem não reconhecidas como válidas
Importante:
Quando o SmartClient HTML/WebApp é utilizado com o broker, o controle de tempo de inatividade continua sendo feito normalmente pelo ERP através da chave InactiveTImeout no arquivo de configuração appserver.ini do TOTVS | Application Server (http://tdn.totvs.com/x/e4pc).
Importante: a aplicação client deve tratar explicitamente o cookie de afinidade TOTVS_BROKER_SH_001 enviado pelo broker.
Quando o broker recebe um request HTTP sem este cookie, o broker envia a seguinte resposta para o client, para criação do cookie:
para POST: "window.location.reload"
outros (GET, etc) : "window.location.href = window.location.href"
Portanto, é essencial que para uma aplicação web client utilizar o Broker HTTP este cenário seja considerado.
Normalmente esta consideração se refere a cenários não browser-based, por exemplo, aplicações client escritas em client em Java, Python, C#, etc.
Eventualmente mesmo aplicações JavaScript browser-based podem precisar de algum tratamento específico quando utilizadas com este broker.
Tudo depende de como a aplicação client é escrita.