SMOs (Service Message Objects) são SDOs (Service Data Objects) aprimorados. O SMO fornece uma camada de abstração para processar e manipular as mensagens trocadas entre os serviços.
Todas essas informações são acessadas como DataObjects SDO e existe uma declaração de esquema que especifica a estrutura geral do SMO. O esquema é gerado pelo WebSphere Integration Developer.
Todos os SMOs têm a mesma estrutura básica. A estrutura consiste um objeto de dados raiz, chamado ServiceMessageObject, que contém outros objetos de dados que representam o cabeçalho, corpo e os dados de contexto. O corpo do SMO contém a carga útil da mensagem. Os cabeçalhos contêm informações que se originam de uma ligação de importação ou exportação específica. Por exemplo, uma ligação JMS.
O SMO fornece uma interface para acessar e modificar os cabeçalhos das mensagens e as cargas úteis das mensagens. O SMO pode representar o conteúdo lógico de diferentes tipos de mensagens.
O WebSphere ESB opera em mensagens inflight entre os nós de extremidade de interação. Dentro do WebSphere ESB, os fluxos de mediação processam as mensagens como SMOs.
O WebSphere ESB cria objetos SMO, os quais estão disponíveis para os fluxos de mediação.
Alguns dos objetos SMO criados pelo tempo de execução são implementados por classes fornecidas pelo tempo de execução. Por exemplo, a classe ServiceMessageObject é fornecida pelo WebSphere ESB. Algumas das classes de cabeçalho do SMO também são fornecidas pelo tempo de execução. Outros objetos SMO criados pelo tempo de execução são implementados por classes criadas por um desenvolvedor.
Ao criar fluxos de mediação, o WebSphere Integration Developer especifica o tipo de corpo de mensagem para cada terminal (entrada, saída ou falha) e opcionalmente, o tipo de informações de contexto. O WebSphere ESB utiliza essas informações para converter mensagens em objetos SMO de um tipo especificado.