Avalados por :

Erro 500 ao atualizar o SAP Commerce Hybris para a versão 1905: Soluções e sugestões

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

Olá equipe!

Atualmente estamos atualizando nosso SAP Commerce Hybris da versão 6.1 para a 2105. Estamos gerenciando nossa loja online com AEM e utilizando o Hybris para administrar produtos, carrinhos e pedidos. Como parte disso, desenvolvemos API REST para obter produtos do Hybris.

Aqui está como se parece a URL da nossa API Rest para obter um produto:

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

Ao atualizar para a versão 1905, a URL anterior está retornando um erro 500 do servidor, exibindo um erro no backend. Testamos muitas soluções, mas nenhuma está funcionando. Abaixo está o 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)"

Soluções testadas:

1. Getters e setters foram adicionados na classe TRPriceDataTypeUtil e os especificadores de acesso foram alterados para públicos, mas o erro persiste.

2. Foi adicionado @JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY) em TRPriceDataTypeUtil. Ainda há o mesmo problema.

3. Foi criada uma classe Objectmapper e o seguinte foi adicionado:

ObjectMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY). O problema continua presente.

4. Foram adicionadas as últimas dependências do Jackson e as importações foram alteradas, desta vez o erro não era exibido, mas no frontend ainda estava dando erro 500.

4. A classe TRPriceDataTypeUtil foi completamente removida, mas o problema persiste.

Alguma sugestão?

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

4 Respuestas

0
Cargando...

Poderias, por favor, colar o registro detalhado?

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

Olá Gang Li,

Obrigado pela sua resposta. Já testei a solução anteriormente. Quando apliquei a solução mencionada, não houve erros no backend, mas o problema persiste no frontend. Continua exibindo um erro interno do servidor 500.

Há algo que eu possa estar ignorando aqui?

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

Olá Sharada,

O registro mostra que Jackson está tentando serializar um bean sem atributos ou métodos.

Existem diferentes maneiras de resolver isso:

=== Método 1: evitar usar qualquer objeto vazio ===

Itere sobre seu código para evitar objetos vazios, algo como "new Object()", se for o caso, substitua por "null".

=== Método 2: evitar falhas em objetos vazios ===

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

ou

ObjectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);

Normalmente, o Método 1 é melhor, pois não altera o comportamento padrão do Jackson ao corrigir o problema.

Com sorte, isso pode te ajudar um pouco.

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

Estou recebendo quase o mesmo erro ao realizar uma expansão com filtro CqnSelect

ERR Causado por: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Não foi encontrado um serializador para a classe com.sap.cds.impl.parser.token.RefSegmentImpl$FilteredSegmentImpl e não foram descobertas propriedades para criar BeanSerializer (para evitar a exceção, desative SerializationFeature.FAIL_ON_EMPTY_BEANS) (através da cadeia de referência: java.util.Collections$SingletonList[0])

para este tipo de expansão

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);

Tentei com um objectMapper Bean personalizado com disable(SerializationFeature.FAIL_ON_EMPTY_BEANS) e o erro persiste

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?