¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Error 500 al actualizar SAP Commerce Hybris a la versión 1905: Soluciones y sugerencias

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

¡Hola equipo!

Actualmente estamos actualizando nuestro SAP Commerce Hybris de la versión 6.1 a la 2105. Estamos gestionando nuestra tienda en línea con AEM y utilizando Hybris para administrar productos, carritos y pedidos. Como parte de esto, desarrollamos API REST para obtener productos de Hybris.

Así es como se ve la URL de nuestra API Rest para obtener un producto:

https://localhost:1905/trwebservices/v1/testcountry/products/1234

Al actualizar a la versión 1905, la URL anterior está arrojando un error 500 del servidor, mostrando un error en el backend. Hemos probado muchas soluciones, pero ninguna está funcionando. A continuación se muestra el stacktrace:

"SEVERE: Servlet.service() for servlet [springmvc] in context with path [/trwebservices] threw exception [Request processing failed; nested exception is org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class com.thomsonreuters.ecom.facades.product.data.TRPriceDataTypeUtil]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class com.thomsonreuters.ecom.facades.product.data.TRPriceDataTypeUtil and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: com.thomsonreuters.ecom.facades.product.data.TRProductData["price"]->com.thomsonreuters.ecom.facades.product.data.TRPriceData["util"])] with root cause

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class com.thomsonreuters.ecom.facades.product.data.TRPriceDataTypeUtil and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: com.thomsonreuters.ecom.facades.product.data.TRProductData["price"]->com.thomsonreuters.ecom.facades.product.data.TRPriceData["util"])

at com.fasterxml.jackson.databind.exc.InvalidDefinitionException.from(InvalidDefinitionException.java:77)"

Soluciones probadas:

1. Se agregaron getters y setters en la clase TRPriceDataTypeUtil y se cambiaron los especificadores de acceso a públicos, pero el error persiste.

2. Se agregó @JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY) en TRPriceDataTypeUtil. Aún se mantiene el mismo problema.

3. Se creó una clase Objectmapper y se agregó lo siguiente:

ObjectMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY). El problema sigue presente.

4. Se agregaron las últimas dependencias de Jackson y se cambiaron las importaciones, esta vez no mostraba el error, pero en el frontend seguía dando error 500.

4. Se eliminó por completo la clase TRPriceDataTypeUtil, pero el problema persiste.

¿Alguna sugerencia?

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

4 Respuestas

0
Cargando...

¿Podrías por favor pegar el registro detallado?

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

Hola Gang Li,

Gracias por tu respuesta. Ya he probado la solución anteriormente. Cuando apliqué la solución mencionada, no arrojó errores en el backend, pero el problema persiste en el frontend. Sigue mostrando un error interno de servidor 500.

¿Hay algo que esté pasando por alto aquí?

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

Hola Sharada,

El registro muestra que Jackson está intentando serializar un bean sin atributos ni métodos.

Tienes diferentes formas de solucionarlo:

=== método 1: evitar usar cualquier objeto vacío ===

Itera sobre tu código para evitar objetos vacíos, algo así como "new Object()", si es así, reemplázalo por "null".

=== método 2: evitar fallos en objetos vacíos ===

ObjectMapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false); (para jackson < 2.*)

o

ObjectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);

Normalmente, el método 1 es mejor ya que no cambia el comportamiento predeterminado de Jackson al corregir el problema.

Con suerte, esto puede ayudarte un poco.

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

Me sale casi el mismo error al realizar una expansión con filtro CqnSelect

ERR Causado por: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No se encontró un serializador para la clase com.sap.cds.impl.parser.token.RefSegmentImpl$FilteredSegmentImpl y no se descubrieron propiedades para crear BeanSerializer (para evitar la excepción, deshabilite SerializationFeature.FAIL_ON_EMPTY_BEANS) (a través de la cadena de referencia: java.util.Collections$SingletonList[0])

para este tipo de expansión

Select.from(ASSORTMENT) .columns( Assortment_::_all, a -> a.toCompBP() .filter(bp -> bp.anyMatch(ofBusinessPartnerFinal)) .expand(AssortmentBusinessPartner_::_all), a -> a.toCompProduct() .filter(p -> p.anyMatch(ofProductFinal)) .expand(AssortmentProduct_::_all) ) .where(fullPredicate);

Intenté con un objectMapper Bean personalizado con disable(SerializationFeature.FAIL_ON_EMPTY_BEANS) y el error sigue presente

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?