Introdução ao Apache CXF

Veja neste artigo uma introdução ao Apache CXF, um framework open source que dá suporte a criação e consumo de Web Services. Ele segue as especificações JAX-WS JAX-RS e oferece suporte a uma variedade grande de protocolos de mensagem.

Apache CXF é um framework open source que dá suporte a criação e consumo de Web Services. Ele segue as especificações JAX-WS e JAX-RS e oferece suporte a uma variedade grande de protocolos de mensagem: SOAP, XML/HTTP, RESTful HTTP ou CORBA. Ainda permite trabalharmos com os protocolos de transporte HTTP e JMS.

Vamos entender essa descrição com calma. Framework é uma coleção de coisas. Essa coleção pode incluir uma ou mais arquiteturas, tecnologias, conceitos, modelos e até mesmo outros frameworks. O CXF é exatamente isso: uma coleção de várias bibliotecas diferentes, organizadas dentro de uma arquitetura que divide esses seus componentes em camadas diferentes que conversam entre si através de uma API definida. Um fato sobre o CXF: ele não é e não pretende ser um servidor, uma plataforma ou um barramento de serviços. Para isso existem outros produtos como Oracle OSB, Apache Service Mix, Mule ESB entre outros.

A próxima expressão é Web Service. O framework estabelecido por Web Services é caracterizado por uma existência abstrata definida através de padrões regulados por organizações e implementados por plataformas tecnológicas de vendedores. Todo Web Service existe para prover operações. Operações fazem parte de contratos que podem ser descritos através de um XML chamado WSDL ou WADL. Protocolos, padrões de troca de mensagem, políticas, meta-dados são outras informações que fazem parte da definição de um Web Service.

Em seguida, JAX-WS ou Java API for XML Web Services e JAX-RS ou Java API for RESTful Web Services entram pra nossa sopa de letrinhas. Em termos bem simples, essas APIs permitem a construção de serviços através do uso de anotações trazendo criando um nível de indireção entre a definição do serviço, feito em termos de classes JAVA anotadas e as plataformas que os executam através da interpretação dessas anotações.

Um protocolo de comunicação, em termos simples, é um conjunto de regras que determinam como dados são trocados entre duas partes. Na descrição vemos dois tipos de protocolos: de mensagem e de transporte. É fácil de entendermos a diferença se pensarmos que o primeiro refere-se a regras que definem o formato da mensagem como por exemplo XML, SOAP (um tipo de xml), JSON, entre outros. O segundo tipo de protocolo define a regra como uma ligação pode ser estabelecida entre dois sistemas. O protocolo de mensagem é comparável a uma carta (com selo, envelope pardo ou não) enquanto o protocolo de transporte é comparável ao carteiro (que caminha lentamente ou usa um carro para fazer suas entregas).

O framework CXF pode ser obtido no endereço http://cxf.apache.org/download.html. Quando acessamos essa página vemos que existem várias últimas versões, criadas a partir de branchs separadas. As versões 2.7.X suportam apenas o Java 6, enquanto as outras suportam o Java 5 ou anterior. A diferença entre as versões 2.6.X, 2.5.X e 2.4.X são diversas e grandes. Essas versões oferecem pouca compatibilidade entre elas de forma que se você usa a versão 2.5.X e deseja utilizar a 2.6.X, vai se deparar com módulos que sumiram, APIs desaparecidas ou substituídas por outras em pacotes diferentes e assim por diante.


Figura 1: Pacotes do Apache CXF da versão 2.7.0

Vamos fazer o download do pacote da versão 2.7.0. Alguns preferem baixar o pacote source (src) para Window ou Unix dependendo da sua plataforma de desenvolvimento já que nele temos o código fonte, tão necessário para debug. Quando descompactamos o pacote, as seguintes pastas são criadas:

É isso pessoal. Finalizamos nossa breve visão do que é o framework Apache CXF. Recomendo que se possível, façam a build a partir do fonte e deem uma boa olhada nos artefatos e exemplos que acompanham o pacote descrito. Até a próxima.

Artigos relacionados