Oracle Service BUS 12c :: “Failed to parse XML text”

Recentemente comecei a utilizar o Oracle Service BUS 12c, mais precisamente a versão 12.2.1.0, e um dos objetivos era o de criar um webservice REST a partir de um webservice SOAP através de uma configuração de OSB.

Virtualizar o serviço SOAP e criar o respectivo serviço REST utilizando o OSB 12c foi bem mais fácil do que eu esperava, a maior parte do trabalho foi “arrastar-e-soltar“.

Realizei os testes testes do serviço SOAP e da interface REST a partir do console OSB e obtive os resultados esperados.

Para ter certeza que não estava me apegando ao resultado aprestado pelo SB Console

Entretanto, quando realizei os mesmos testes na interface REST utilizando o Postman (e o SoapUI) obtinha como resposta a mensagem de falha:

{
  "errorMessage": "Failed to parse XML text",
  "errorCode": "OSB-382000"
}

Analisei o log do servidor para descobrir a causa do problema mas ele apenas apresentava o seguinte:

<com.bea.alsb.common.catalog.cataloglogger> <cataloglogger> <log>
<exception in="" inboundwsdlresthandler.handleresponse,="" com.bea.wli.sb.sources.transformexception:=""  failed="" to="" parse="" xml="" text="">
...
Caused by: java.io.CharConversionException: Malformed UTF-8 character: 0xc1 0x47

Como você pode ver, o log do servidor não ajudou a descobrir porque o problema aconteciae pesquisar no Google e no “My Oracle Support” também não ajudaram muito.

Depois de horas de pesquisas infrutiferas decidi fazer um teste utilizando um processo BPEL e, como suspeitava, tive certeza que o problema era causado pelo enconding do serviço SOAP.

Neste caso a solução foi alterar as informações do business service, do serviço SOAP que estava virtualizado, definindo o encoding para o request e response do componente na configuração do OSB.

Para ajustar isso clique com o botão direito sobre o componente e selecione a opção “Edit”, como mostrado na imagem abaixo:

arcgis1

Na tela de edição do arquivo “.bix”, no menu a esquerda, selecione o item “Transport Details” e informe o valor “utf-8” nos campos “Request Encoding” e “Response Encoding” como mostrado na figura abaixo:

arcgis2

Com esse ajuste na configuração do “business service” a interface REST  vai funcionar como esperado.

Qualquer dúvida deixa um comentário.

 

Deixe um comentário