Seja para os sistemas corporativos, usados internamente pelas empresas, ou para aqueles que são disponibilizados ao público geral, a eficácia da camada de integração é um elemento capaz de proporcionar um diferencial competitivo, já que as soluções coexistem em um ecossistema no qual informações e comportamentos são compartilhados a fim de oferecer apoio em decisões e processos de negócios.
Neste contexto, existem muitos frameworks disponíveis na plataforma Java que facilitam a implementação de uma camada de integração eficaz. O Spring Framework é um destes frameworks, e certamente é o mais popular do mercado, todavia, este artigo tem como objetivo apresentar uma alternativa interessante para o desenvolvimento de uma camada de integração mais próxima à especificação Java EE, particularmente a JSR 339 (JAX-RS 2.0).
Tal alternativa será elaborada através de um novo recurso que surgiu na versão 3.0 do Apache CXF: o suporte ao CDI 1.1.
O progresso na forma de comunicação entre diferentes sistemas de tecnologia tem determinado a maneira com que as soluções de software são construídas há pouco mais de uma década. Pode-se dizer que hoje em dia é raro a existência de um software sem qualquer ligação externa, ou seja, que não esteja integrado a outros sistemas, seja como consumidor ou como produtor de dados e/ou comportamentos.
Praticamente é uma regra de boas práticas considerar uma API de serviços externa quando planejamos a construção de um novo sistema de software. Por esse motivo, as formas e possibilidades de integração têm evoluído de uma forma positiva, se tornando cada vez mais fáceis e transparentes ao desenvolvedor.
O fenômeno do “Big Data” é um reflexo desta evolução. Tal fenômeno deu-se devido a magnitude da quantidade de informações produzidas e na velocidade com a qual são disponibilizadas e interpretadas atualmente. Estas informações são analisadas por meio de algoritmos avançados que tomam decisões com base na interpretação dos dados em tempo real.
Desse modo, podem resultar em uma significativa vantagem competitiva quando o time-to-market é um diferencial. Uma vez que todas essas informações são extraídas de múltiplos sistemas fornecedores, é necessário a aplicação de estratégias de integração assertivas.
Outros exemplos que refletem a evolução da forma de integração entre sistemas são as centenas de APIs disponibilizadas por empresas com presença massiva na internet, como o Google, Facebook, Twitter, Amazon, entre outras. Estas APIs são responsáveis por expor comportamentos e informações para serem usados em quaisquer outros sistemas computacionais.
Basicamente, na literatura podemos identificar três métodos mais populares de integração entre sistemas, a saber:
· Integração Vertical: consiste em integrar sistemas de acordo com a sua função dentro de uma cadeia mais ampla. É como uma linha de produção, onde cada subsistema, denominado “silo”, executa a sua tarefa e repassa os dados para o próximo “silo”;
· Integração Estrela ou Integração Espaguete: ocorre quando um sistema possui uma única interface de integração para cada outro sistema, como uma estrela de várias pontas, onde cada ponta é uma ligação a outro sistema. Ao desenhar um diagrama geral destas ligações, o formato é similar a um prato de espaguete;
· Integração Horizontal: mais conhecida como Enterprise Service Bus (ESB), nesta integração cada sistema se limita a uma única interface de comunicação com um barramento central responsável por orquestrar o fluxo de informações de um sistema para o outro.
Recentemente, mais um tipo de integração vem adquirindo popularidade. Denominado “Integração baseada na Nuvem”, ou “Cloud-based Integration”, consiste em oferecer como um serviço toda uma plataforma de integração (IPaaS, ou Integration Platform as a Service). Um exemplo disto é o CloudHub da MuleSoft, empresa que mantém o ESB open source mais popular do mercado.
Como já é de conhecimento de todos, o mecanismo que possibilita a integração entre diferentes sistemas é conhecido como Web Service. Essas duas palavras foram associadas pela primeira vez a outros termos como XML, SOAP, WSDL e UDDI em 12 de julho de 2000, por Bill Gates, em uma conferência da Microsoft para desenvolvedores, na cidade de Orlando, Flórida.
Todavia, apesar de terem sido os primeiros a proferi-lo, os Web Services não foram criados pela Microsoft. Tal tecnologia originou-se ao final do ano 2000, a partir de um trabalho em conjunto de cinco dos maiores fornecedores de infraestrutura de TI interessados em construir mercados eletrônicos compartilhados, também chamados de e-marketplaces.
Surpreendentemente, após uma cooperação sem precedentes da Sun, IBM, HP, Microsoft e Oracle, foi concebida a especificação dos padrões para integração de sistemas através de Web Services, que tem sido muito utilizada até hoje, conhecidos como: o SOAP (Simple Object Access Protocol), WSDL (Web Services Description Language) e o UDDI (Universal Description, Discovery, and Integration).
Nesse meio tempo, muitos outros padrões surgiram, mas nenhum teria superado a popularidade do SOAP até a chegada do RESTful, que vem predominando no cenário atual devido a sua simplicidade, e que geralmente é complementado com o uso de WebSockets, para os casos onde a comunicação entre cliente e servidor exige um grau de frequência mais elevado.
O Apache CXF
Neste contexto, nasceram alguns frameworks dedicados a facilitar a integração através Web Services. Entre eles o Apache CXF, que originou-se da fusão de dois outros projetos open sources: o Celtix, desenvolvido pela IONA Technologies, e o XFire, mantido por um grupo independente de desenvolvedores. O Apache CXF, além de implementar as especificações JAX-WS e JAX-RS, pode trabalhar com diversos protocolos como SOAP, XML/HTTP, RESTful ou CORBA. Além disso, é possível usar diferentes camadas de transporte, como o HTTP, JMS, WebSockets ou JBI.
Não foi à toa que a Apache decidiu incorporar o projeto. Este é baseado em premissas aderentes à qualidade e boas práticas de desenvolvimento. Vejamos algumas delas:
· Separação bem definida da camada de apresentação (front-end) da lógica de negócios. Isto é até uma premissa requerida pela especificação JAX-WS;
· Simplicidade e clareza do código fonte produzido. Um exemplo disso é a criação de clientes e pontos de integração (endpoints) sem o uso de anotações;
· Alta performance com o mínimo de recursos computacionais;
· E finalmente, o uso de Web Services na forma de componentes que podem ser incorporados facilmente em diversos outros aplicativos.
O Apache
CXF é também empregado em outros projetos, como o Apache ServiceMix, Apache
Camel e Apache ActiveMQ. Tais p ...