Avalados por :

Solução para erro de conexão SSL ao enviar um JSON grande em formato binário

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 4 Vistas
0
Cargando...

Bom dia,

Estou encontrando o seguinte erro ao tentar me conectar a um sistema de terceiros. Abaixo está o erro do XPI_ Inspector.

ssl_debug(2714): Mensagem de saudação server_hello_done recebida.

ssl_debug(2714): Enviando mensagem de troca de chaves do cliente...

ssl_debug(2714): Enviando mensagem de troca de especificação de criptografia...

ssl_debug(2714): Enviando mensagem de finalização...

ssl_debug(2714): Mensagem de troca de especificação de criptografia recebida.

ssl_debug(2714): Mensagem de finalização recebida.

ssl_debug(2714): Sessão adicionada ao cache de sessões.

ssl_debug(2714): Handshake concluído, estatísticas:

ssl_debug(2714): Lidos 5116 bytes em 5 registros, escritos 476 bytes em 4 registros.

ssl_debug(2714): Exceção ao enviar mensagem: java.net.SocketException: erro 32 - Pipe quebrado (Escrita falhou) (porta local 51509 para o endereço 10.239.5.120 (WSMZAPPPOD.wilson.sons), host remoto desconhecido)

ssl_debug(2714): Fechando a camada SSL...

ssl_debug(2714): Ignorando exceção ao fechar: java.net.SocketException: erro 32 - Pipe quebrado (Escrita falhou) (porta local 51509 para o endereço 10.239.5.120 (WSMZAPPPOD.wilson.sons), host remoto desconhecido)

ssl_debug(2714): Lidos 0 bytes em 0 registros, 0 bytes líquidos, média 0.

ssl_debug(2714): Escritos 344826 bytes em 22 registros, 344188 bytes líquidos, média 15644.

ssl_debug(2714): Fechando o transporte...

ssl_debug(2714): Fechando o transporte...

ssl_debug(2714): Fechando o transporte...

Capturando java.net.SocketException: erro 32 - Pipe quebrado (Escrita falhou) (porta local 51509 para o endereço 10.239.5.120 (WSMZAPPPOD.wilson.sons), host remoto desconhecido)

Já segui os passos da nota https://launchpad.support.sap.com/#/notes/2604240 mas não funcionou.

Devo informar que se trata de um JSON muito grande, pois estou enviando um arquivo em formato binário.

Alguma ideia?

Obrigado

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Olá ti_sap_abap ,

A divisão deve ser feita na fonte, se possível.

O serviço da web não foi projetado para cargas grandes. É necessário gerar várias mensagens do próprio servidor de origem. Você não explicou todo o cenário sobre como isso foi projetado.

Depois de explicar todo o cenário, talvez os membros do fórum sugiram uma boa solução.

Saudações

Anupam

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Bom dia anupam.ghosh2 ,

O cenário envolve consumir uma API externa com o seguinte design:

{

"AWSAccessKeyId": "XXXXXXXXXXXXXXX",

"Key": "rebocadores/conta_a_receber/proxy.xls",

"x-amz-security-token": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",

"policy": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",

"signature": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",

"file": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

}

O problema está na tag "file". Esta tag é preenchida com o conteúdo binário de um arquivo do Excel gerado em um programa ABAP, através do método cl_salv_bs_tt_util=>if_salv_bs_tt_util~transform e a função SCMS_XSTRING_TO_BINARY.

Após preencher o conteúdo, o programa ABAP chama o PI, que gera o JSON com esse conteúdo.

A API externa espera que todo o conteúdo do arquivo esteja nesta tag "file". Não entendo como poderia dividir esse conteúdo.

Obrigado

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá ti_sap_abap ,

"Esta tag está cheia com o conteúdo binário de um arquivo do Excel gerado em um programa ABAP, através do método cl_salv_bs_tt_util=>if_salv_bs_tt_util~transform e a função SCMS_XSTRING_TO_BINARY." -> dividir este conteúdo binário em duas partes e então enviar duas cargas úteis para o PI. Muito depende de como o código ABAP está populado de conteúdo e se é possível ou não dividir. Se não for possível, então você deve entrar em contato com a equipe de terceiros de WS. Pergunte a eles sobre o valor de limiar do tamanho da mensagem e peça para aumentar.

Cumprimentos

Anupam

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Este erro ocorre em Java quando uma conexão entre um cliente e um servidor é encerrada inesperadamente. Indica que o servidor parou de ler do socket, e qualquer escrita subsequente no socket Java resultará em um erro de pipe quebrado. Isso geralmente acontece quando o servidor caiu ou quando o cliente não consegue mais se comunicar com o servidor, seja por um problema de rede ou porque o servidor fechou a conexão.

Soluções:

  • Verificar a conectividade de rede entre o cliente e o servidor. Se houver um problema de rede, pode causar o encerramento inesperado da conexão.
  • Aumentar o valor do tempo limite no lado do cliente. Às vezes, uma conexão lenta pode esgotar o socket e encerrar a conexão.
  • Certificar-se de que o servidor pode lidar com um grande número de conexões. Se o servidor não estiver configurado para lidar com muitas conexões, pode fechar a conexão se estiver sobrecarregado.
  • Implementar tratamento de erros em seu código. Você pode capturar a exceção "java.net.SocketException: Broken pipe" e lidar com ela em seu código. Por exemplo, você pode tentar restabelecer a conexão ou registrar o erro para fins de depuração.
  • Verificar se o servidor não está fechando a conexão prematuramente. Às vezes, o servidor pode fechar a conexão antes que o cliente tenha terminado de enviar dados. Você pode verificar os registros do servidor para ver se esse é o caso.
Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?