Retorno "Could not receive message" em chamada via SOAP ao RM

Boa noite,

Estamos utilizando uma atividade de serviço para gerar uma solicitação de compras no RM, a chamada está sendo feita via SOAP. Na maioria das vezes a solicitação é gerada corretamente, mas em algumas situações recebemos o seguinte retorno:

JavaException: javax.xml.ws.WebServiceException: Could not receive Message. (#239) - Tempo de Execução 120 s

Enviar novamente a solicitação para atividade de serviço resolve.

Aparentemente trata-se de um erro no retorno do RM, alguém já enfrentou esse problema?

Obrigado desde já.

Provavelmente é o tempo de integração do seu sistema está demorando, dar para resolver isto aumentando o timeOut no seu arquivo domain.xml(C:\fluig\appserver\domain\configuration) da plataforma fluig.
Segue documentação: Como alterar o timeout da plataforma - TOTVS Fluig - TDN

1 curtida

Você também consegue aumentar o tempo de timeout da sua chamada do saveRecord sem precisar alterar da plataforma como um todo dessa forma:

 // monta a requisição ao servidor
    var servico = ServiceManager.getService(SERVICO);
    var instancia = servico.instantiate(CAMINHO_SERVICO);
    var ws = instancia.getRMIwsDataServer();
    var serviceHelper = servico.getBean();
    var properties = {};
    properties['basic.authorization'] = 'true';
    properties['basic.authorization.username'] = USUARIO;
    properties['basic.authorization.password'] = SENHA;
    properties['disable.chunking'] = 'true';
    properties['log.soap.messages'] = 'true';
    properties['receive.timeout'] = '180000'; // timeout em milissegundos
    var authService = serviceHelper.getCustomClient(ws, CLASSE_SERVICO, properties);
    //		var authService = serviceHelper.getBasicAuthenticatedClient(ws, CLASSE_SERVICO, USUARIO, SENHA);

    // contexto para chamada do DataServer
    CONTEXTO = 'CODUSUARIO=' + USUARIO + ';CODSISTEMA=T;CODCOLIGADA=' + CODCOLIGADA;

    var resp = authService.saveRecord(NOMEDATASERVER, XML, CONTEXTO);

Coloquei o código pela metade pois o importante é a criação desse properties onde vc coloca o tempo de timeout em milisegundos, ou seja, 180000 = 3 minutos, recomendo ir aumentando aos poucos, colocar 5min inicialmente e ir validando se é o suficiente para sua demanda.

1 curtida

Muito obrigado, pessoal. Vou testar essa solução de aumentar o timeout. Por incrível que pareça o erro não acontece há bastante tempo.