Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Há um problema conhecido no ORB Mico 2.3.13 sobre o mecanismo de interceptação e isso faz com que as chamadas do núcleo do barramento ou de outros sistemas usando o OpenBus SDK 2.1 não interoperem com um sistema que ainda usa o OpenBus SDK 2.0 C++ ORB Mico.

Sintoma do problema

O problema que os sistemas com OpenBus SDK 2.1 experimentam é representado pela exceção NO_PERMISSION com código 1112888318.

Esse código significa (conforme FAQ): serviço remoto não respeita o protocolo.

Causa raiz

Isso acontece porque o Mico usa internamente uma única estrutura de dados tanto o service_context de requisições (do inglês: request) quanto de respostas (do inglês: reply).

...

  1. Quando um servidor OpenBus SDK 2.0 C++ ORB Mico recebe uma requisição de um sistemas que usa OpenBus SDK 2.1, a estrutura service_context é preenchida com o número de série do protocolo 2.1. Isso é normal.
  2. Ao responder a essa requisição o OpenBus SDK 2.0 preenche a estrutura service_context com o número de série do protocolo 2.0. Isso também é normal.
  3. Como o ORB Mico não diferencia as estruturas de requisição e de resposta, a resposta conterá tanto o número de série do protocolo 2.1 quanto o número de série do protocolo 2.0. Isso não deveria acontecer e é uma situação não-prevista na implementação do OpenBus SDK.
  4. A partir desse problema, o sistema cliente que esteja utilizando o OpenBus SDK 2.1 vai tentar decodificar os dados da resposta contendo o número de série do protocolo 2.1 e vai acontecer o erro.

Solução de contorno

Esse problema pode ocorrer em duas situações:

...