Avalados por :

Solución al error de conexión SSL al enviar un JSON grande en formato binario

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

Buenos días,

Me encuentro con el siguiente error al intentar conectarme a un sistema de terceros. A continuación se muestra el error desde XPI_ Inspector.

ssl_debug(2714): Mensaje de saludo server_hello_done recibido.

ssl_debug(2714): Enviando mensaje de intercambio de clave del cliente...

ssl_debug(2714): Enviando mensaje de cambio de especificación de cifrado...

ssl_debug(2714): Enviando mensaje de finalización...

ssl_debug(2714): Mensaje de cambio de especificación de cifrado recibido.

ssl_debug(2714): Mensaje de finalización recibido.

ssl_debug(2714): Sesión agregada al caché de sesiones.

ssl_debug(2714): Handshake completado, estadísticas:

ssl_debug(2714): Leídos 5116 bytes en 5 registros, escribidos 476 bytes en 4 registros.

ssl_debug(2714): Excepción al enviar mensaje: java.net.SocketException: error 32 - Pipe roto (Escritura fallida) (puerto local 51509 a dirección 10.239.5.120 (WSMZAPPPOD.wilson.sons), host remoto desconocido)

ssl_debug(2714): Cerrando la capa SSL...

ssl_debug(2714): Ignorando excepción al cerrar: java.net.SocketException: error 32 - Pipe roto (Escritura fallida) (puerto local 51509 a dirección 10.239.5.120 (WSMZAPPPOD.wilson.sons), host remoto desconocido)

ssl_debug(2714): Leídos 0 bytes en 0 registros, 0 bytes netos, promedio 0.

ssl_debug(2714): Escritos 344826 bytes en 22 registros, 344188 bytes netos, promedio 15644.

ssl_debug(2714): Cerrando el transporte...

ssl_debug(2714): Cerrando el transporte...

ssl_debug(2714): Cerrando el transporte...

Capturando java.net.SocketException: error 32 - Pipe roto (Escritura fallida) (puerto local 51509 a dirección 10.239.5.120 (WSMZAPPPOD.wilson.sons), host remoto desconocido)

Ya he aplicado los pasos de la nota https://launchpad.support.sap.com/#/notes/2604240 pero no funcionó.

Debo informarle que se trata de un JSON muy grande, ya que estoy enviando un archivo en formato binario.

¿Alguna idea?

Gracias

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

4 Respuestas

0
Cargando...

Hola ti_sap_abap ,

La división debe hacerse en la fuente, si es posible.

El servicio web no ha sido diseñado para cargas grandes. Desde el servidor fuente mismo es necesario generar múltiples mensajes. No has explicado todo el escenario sobre cómo se ha diseñado esto.

Una vez que expliques todo el escenario, entonces tal vez los miembros del foro sugieran una buena solución.

Saludos

Anupam

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

Buenos días anupam.ghosh2 ,

El escenario consiste en consumir una api externa con el siguiente diseño:

{

"AWSAccessKeyId": "XXXXXXXXXXXXXXX",

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

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

"policy": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",

"signature": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",

"file": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

}

El problema está en la etiqueta "file". Esta etiqueta se llena con el contenido binario de un archivo de Excel generado en un programa ABAP, a través del método cl_salv_bs_tt_util=>if_salv_bs_tt_util~transform y la función SCMS_XSTRING_TO_BINARY.

Después de llenar el contenido, el programa ABAP llama al PI, que genera el JSON con ese contenido.

La api externa espera que todo el contenido del archivo esté en esta etiqueta "file". No entiendo cómo podría dividir este contenido.

Gracias

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

Hola ti_sap_abap ,

"Esta etiqueta está llena con el contenido binario de un archivo de Excel generado en un programa ABAP, a través del método cl_salv_bs_tt_util=>if_salv_bs_tt_util~transform y la función SCMS_XSTRING_TO_BINARY." -> dividir este contenido binario en dos partes y luego enviar dos cargas útiles a PI. Mucho depende de cómo el código ABAP está poblado de contenidos y si es posible o no dividirlo. Si esto no es posible, entonces debes comunicarte con el equipo de WS de terceros. Pregúntales el valor umbral del tamaño del mensaje y pídeles que lo aumenten.

Saludos

Anupam

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

Este error ocurre en Java cuando una conexión entre un cliente y un servidor se termina inesperadamente. Indica que el servidor ha dejado de leer desde el socket, y cualquier escritura posterior al socket de Java resultará en un error de tubería rota. Esto suele suceder cuando el servidor se ha caído o cuando el cliente ya no puede comunicarse con el servidor, ya sea debido a un problema de red o porque el servidor ha cerrado la conexión.

Soluciones:

  • Verificar la conectividad de red entre el cliente y el servidor. Si hay un problema de red, puede causar que la conexión se termine inesperadamente.
  • Aumentar el valor de tiempo de espera en el lado del cliente. A veces, una conexión lenta puede hacer que el socket se agote y termine la conexión.
  • Asegurarse de que el servidor pueda manejar un gran número de conexiones. Si el servidor no está configurado para manejar muchas conexiones, puede cerrar la conexión si se ve abrumado.
  • Implementar manejo de errores en tu código. Puedes capturar la excepción "java.net.SocketException: Broken pipe" y manejarla en tu código. Por ejemplo, puedes intentar restablecer la conexión o registrar el error con fines de depuración.
  • Verificar que el servidor no esté cerrando la conexión prematuramente. A veces, el servidor puede cerrar la conexión antes de que el cliente haya terminado de enviar datos. Puedes revisar los registros del servidor para ver si este es el 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?