title | Erros de web services com broker em servidores Protheus |
---|
| O broker é comumente utilizado para balancear consumo de web services fornecidos por servidores Protheus.
O broker utilizado é o "broker de web services" (no ini existe a chave "[BALANCE_WEB_SERVICES]").
Neste cenário, um pré-requisito para o funcionamento correto é que a aplicação cliente NÃO deve utilize conexões HTTP persistentes (header HTTP "Connection: Keep-Alive").
Esta é uma característica do servidor Protheus, que fecha a conexão logo em seguida ao envio da resposta de um pedido de web services.
Caso a aplicação cliente utiliza conexões persistentes no log do broker eventualmente pode aparecer a mensagem
"late reception from client in state WAITING_CLIENT_CLOSE, there are no more pending operations".
Em versões mais antigas do broker a mensagem está em português:
"recepcao atrasada do cliente em WAITING_CLIENT_CLOSE, nao existem mais operacoes pendentes".
Portanto, na eventualidade de ocorrer erros intermitentes na utilização do broker de web services para balanceamento de web services para servidores Protheus, verificar o log do broker,
e se no log do broker aparecer uma das mensagens acima, configurar a aplicação cliente para utilizar conexões nao-persistentes (header HTTP "Connection: close").
Notar que o modo padrão da conexão na especificação HTTP 1.1 é "conexão persistente", isto é, quando a aplicação cliente não envia o header "Connection:", subentende-se que é como se tenha enviado o header "Connection: Keep-Alive". Portanto, a aplicação cliente deve ser configurada para enviar explicitamente o header "Connection: close".
É importante entender que esta situação de erro não é causada pelo broker. Mesmo sem a utilização do broker podem ocorrer erros, quando a aplicação cliente tentar enviar um segundo pedido de web services em uma conexão que já foi fechada pelo Protheus. A utilização do broker (ou qualquer outro proxy de balanceamento) no entanto pode potencializar a ocorrência desses erros, por causa do retardo (lag) adicional associado ao processo de balanceamento.