Artigo Java Magazine 33 - Integração com JBI

Artigo Publicado pela Java Magazine 33.

Esse artigo faz parte da revista Java Magazine edição 33. Clique aqui para ler todos os artigos desta edição


Clique aqui para ler esse artigo em PDF.

Integração com JBI

Parte 2: Explorando a API e o ServiceMix

Julio Faerman

Na primeira parte deste artigo, foi apresentada a especificação Java para integração corporativa, o Java Business Integration (JSR-208), e sua primeira implementação open source, o Apache ServiceMix (servicemix.org). Também foi mostrado como usar os componentes do ServiceMix para realizar diversas tarefas de integração.

Nesta segunda parte, analisaremos em detalhe os componentes e as trocas de mensagens necessárias para desenvolver um componente personalizado. Também mostramos mais detalhes sobre a configuração e gerenciamento do Enterprise Service Bus (ESB, o coração de uma implementação JBI).

Explorando os componentes

Os componentes, junto com as mensagens, são elementos centrais do JBI. Para garantir o comportamento apropriado dos componentes em qualquer implementação do JBI, a especificação define as características dos componentes e o que o ESB fornecerá a um componente instalado.

A primeira coisa a se definir é o tipo do componente:

·Service Engine (SE) – Componentes deste tipo são configurados para executar uma operação ao receberem uma mensagem. Por exemplo, podemos ter Service Engines de execução de scripts ou consultas SQL, validação de dados. SEs são usados para expor partes da lógica de negócios, processos de negócios, ou serviços de transformação de dados.

·Binding Component (BC) – Componentes de binding fornecem pontos de acesso ao ESB. Normalmente, obtêm informações usando um protocolo e as convertem em mensagens para o ESB. O ESB, por sua vez, entrega essas mensagens a outro componente. Por exemplo, podemos criar BCs para receber ou enviar requisições HTTP, arquivos via FTP ou mensagens SOAP.

 

O que define o tipo do componente é muito mais seu objetivo do que sua implementação. Se for um componente “trabalhador”, é um Service Engine; se for um “conector”, é um Binding Component. Na API do JBI a diferença entre os dois tipos é determinada apenas por um flag.

A API do JBI é bastante abstrata, deixando muitas decisões e trabalho para o desenvolvedor do componente. O ServiceMix disponibiliza classes de apoio que simplificam a programação e a instalação de componentes JBI. Assim, para uma classe poder ser instalada como um componente, basta que implemente a interface org.servicemix.MessageExchangeListener. O único método dessa interface, onMessageExchange(MessageExchange exchange), será invocado pelo ServiceMix para a troca de mensagens com o componente.

Para instalar um novo componente, é suficiente que ele esteja no classpath ao ser inicializado o ServiceMix, ou que seja colocado a qualquer momento no diretório deploy do ServiceMix. É importante destacar que os componentes desenvolvidos usando APIs específicas ao ServiceMix são aderentes à especificação JBI. Na instanciação, eles são encapsulados em um objeto da classe ComponentAdaptor (pacote org.apache.servicemix.components.util), que toma conta de toda infra-estrutura necessária para cumprir a especificação. (ComponentAdaptor implementa a interface javax.jbi.component.Component do JBI).

Service Units

Os componentes JBI devem ser projetados para fazer parte da infra-estrutura de integração, não das aplicações específicas. E devem ser configuráveis de maneiras diferentes, de acordo com cada necessidade de integração. Por exemplo, podemos ter um componente de execução de scripts, e ao longo do tempo adicionarmos novos scripts sem alterar o código do componente; um componente de verificação ortográfica poderia receber novos dicionários, e assim por diante." [...] continue lendo...

Artigos relacionados