Bom dia,
Temos um dataset customizado que integra com o TOTVS HCM Datasul e retorna dados de aniversariantes. Entretanto, os dados não estão sincronizando mais e está retornando uma mensagem de erro no log da sincronização: "sung.org.mozzila.javascript.internal.WrappedException: Wrapped javax.xml.ws.WebServiceException: Could not send Message.Unknow source at line number 83", conforme anexo. Entretanto, os dados eram sincronizados todos os dias. Provavelmente, deve ter sido alguma atualização do Fluig.
A linha 83 mencionada no retorno de erro da sincronização apresenta o seguinte trecho de código abaixo e anexo também:
82 if (tenantId) {
83 resp = service.callProcedureWithTokenAndCompany(token, tenantId, programa, metodo, jsonParams);
84 } else {
85 resp = service.callProcedureWithToken(token, programa, metodo, jsonParams);
86 }
87
88 log.info('Retorno callDatasul: ' + resp);
Favor verificar a possibilidade de me ajudar neste caso.
Grato!
Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.
Bom dia Welder, você teria o log do fluig completo do momento que ocorre o erro?
Bom dia diogo,
Baixei o log completo da data de hoje e vou lhe encaminhar pela pergunta original. Hoje pela manhã, estou fazendo testes desde ás 08hs.
Muito obrigado pelo retorno!
Bom dia Diogo,
Segue anexo log completo do servidor na data de hoje. Estou realizando testes desde ás 08hs.
Muito obrigado!
No código estou utilizando serviceProvider para chamar o custom client, conforme trecho do código abaixo. Ainda preciso incluir o serviceHelper?
function callDatasul(programa, metodo, json, tenantId, properties, usuario) {
properties = properties || {};
usuario = usuario || 'super';
var serviceProvider = ServiceManager.getService('WSEXECBO');
var serviceLocator = serviceProvider.instantiate('com.totvs.framework.ws.execbo.service.WebServiceExecBO');
var service = serviceLocator.getWebServiceExecBOPort();
var client = serviceProvider.getCustomClient(service, "com.totvs.framework.ws.execbo.service.ExecBOServiceEndpoint", properties);
Caso tenha alguma dúvida, segue todo o código anexo.
Grato!
Atenção: Esta publicação foi transferida automaticamente do fórum antigo, mas os anexos não foram incluídos.
Welder,
conforme o trecho do log abaixo o WebServiceExecBO está demorando mais de 60 segundos para retornar a resposta, esse é o tempo default de espera do client WS do fluig. Se desejar, você pode aumentar esse tempo configurando a propriedade receive.timeout conforme a documentação abaixo:
Webservice com client personalizado
Sugiro você fazer essa chamada primeiro pelo SoapUI para vericar o tempo que vai levar para que o WebServiceExecBO retorne a resposta.
Veja no log a chamada começa 08:36:31 e da o timeout nos 60 segundos as 08:37:31:
2018-05-09 08:36:31,178 INFO [com.fluig.bpm.service.DatasetMetaListServiceBean] (WebdeskScheduler_Worker-3) Início da sincronização do Dataset : hcm_busca_aniversariantes
2018-05-09 08:36:31,274 INFO [org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean] (WebdeskScheduler_Worker-3) Creating Service {http://service.execbo.ws.framework.totvs.com}WebServiceExecBO from WSDL: http://manap26:8380/wsexecbo/WebServiceExecBO?wsdl
2018-05-09 08:36:31,300 INFO [org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean] (WebdeskScheduler_Worker-3) Creating Service {http://service.execbo.ws.framework.totvs.com}ExecBOServiceEndpointService from class com.totvs.framework.ws.execbo.service.ExecBOServiceEndpoint
2018-05-09 08:37:31,203 WARN [com.fluig.monitoring.jschronos.JSChronos] (JSChronos.CustomizationManagerImpl.invokeFunction.onSync) CustomizationManagerImpl.invokeFunction.onSync ja esta sendo executado por 60 segundos params: [[0], Thread = WebdeskScheduler_Worker-3, ]
2018-05-09 08:37:31,534 WARNING [org.apache.cxf.phase.PhaseInterceptorChain] (WebdeskScheduler_Worker-3) Interceptor for {http://service.execbo.ws.framework.totvs.com}WebServiceExecBO#{http://service.execbo.ws.framework.totvs.com}callProcedureWithTokenAndCompany has thrown exception, unwinding now: org.apache.cxf.interceptor.Fault: Could not send Message.
Caused by: java.net.SocketTimeoutException: SocketTimeoutException invoking http://manap26:8380/wsexecbo/WebServiceExecBO: Read timed out
===================
Você vai instanciar um client personalizado conforme o exemplo abaixo:
var properties = {};
// Coloquei aqui 5 minutos de timeout, é usado em formato de milisegundos
properties["receive.timeout"] = "300000";
// Essa variável **serviceHelper** aqui você substitui pela sua que você utiliza pra dar **instantiate** nos objetos
var customClient = serviceHelper.getCustomClient(service, properties);
// Depois de criar o client, utiliza ele pra fazer a chamada no lugar do service
if (tenantId) {
resp = customClient.callProcedureWithTokenAndCompany(token, tenantId, programa, metodo, jsonParams);
} else {
resp = customClient.callProcedureWithToken(token, programa, metodo, jsonParams);
}
Muito obrigado Diogo!
A configuração recomendada no link devo fazer no próprio Fluig? É via implementação no código? Pode me ajudar? É porque nunca fiz e não sei os caminhos das pedras.
Muito obrigado!
Welder, atualizei a resposta com um exemplo
Muito obrigado pelo retorno meu caro! Editei a resposta com uma dúvida, se puder fazer o favor de auxiliar, agradeço.
Não precisa incluir o serviceHelper não, você usará o serviceProvider mesmo.
Achei o parâmetro receiver no código e estava zerado, alterei para 30000 e subi o dataset novamente, mas continuou retornando a mesma mensagem de erro na sincronização. Sabe o que pode ser?
Muito obrigado pela ajuda!
No código anexo ainda está fazendo a chamada com service.callProcedureWithTokenAndCompany, você substituiu por client.callProcedureWithTokenAndCompany ? Ali no caso você pode deixar o parâmetro como zero se preferir, o zero corresponde ao timeout ilimitado, ou seja, não vai ter timeout do lado do client
Substitui por client sim e mesmo assim persiste aquele erro de log na sincronização. Devo voltar o timeout para 0 e testar novamente?
Grato!
Pode tentar com o 0, se puder coloca o novo log com o erro em anexo
Agora o erro mudou, veja a mensagem: “sun.org.mozilla.javascript.internal.WrappedException: Wrapped javax.xml.ws.soap.SOAPFaultException: [com.arjuna.ats.internal.jta.transaction.arjunacore.inactive] [com.arjuna.ats.internal.jta.transaction.arjunacore.inactive] The transaction is not active! (#83) in at line number 83”. Coloquei o novo log na resposta!
Muito obrigado Diogo!
Bom dia Diogo,
Conseguiu identificar o problema? Pode ser no TOTVS HCM também? Porque nada foi alterado e o webservice está funcionando normalmente.
Bom dia Welder, pelo log estava estourando o tempo de transação do jboss do TOTVS HCM. Deve estar configurado para 10 minutos (DatasetMetaListServiceBean.datasetSync executou por 558 segundos). Você poderia até aumentar o tempo da transação, mas acho que seria indicado avaliar o porque de uma consulta demorar mais de 10 minutos naquele momento.