Você está na página 1de 37

Criando

Web Services
com

Apache Axis

Palestrante: Daniel Destro do Carmo


Tópicos do Tutorial

Introdução

O que são Web Services?

Padrões Web Services


SOAP
WSDL

Web Services com Java

O que é Apache Axis?

Desenvolvendo Web Services com Axis


Server side
Client side
Introdução
A Internet

A internet revolucionou a maneira de se fazer negócios.

Sites e aplicações são facilmente acessados.

O HTML e o protocolo HTTP são o padrão de troca de informações.

Os navegadores web tornaram essa comunicação simples e possível.

Diversas tecnologias foram criadas para o desenvolvimento web.

Java
PHP
internet ASP
clientes web C++
etc...
Web server
A Evolução

Com o grande sucesso, os negócios na internet evoluíram.

A necessidade de novas soluções aumentaram.

Transações e trocas de informações comerciais tornaram-se cruciais


para os negócios.

A automatização era fundamental.

solicitar crédito
fazer pedido de compra
acompanhar o pedido
confirmar envio dos produtos

Empresa ABC Fornecedor XYZ


O Grande Problema

Diferentes empresas tendem a utilizar diferentes tecnologias e


soluções.

Grande problema para integrar todas essas soluções, de forma


automatizada. Algumas tecnologias não são interoperacionais.

Uma solução para cada tecnologia tornaria isso inviável e caro.

Mudança de provedor de serviços pede nova implementação.

Corba Solução proprietária


ASP Java
XML Delphi
.NET
PHP
DCOM Sockets RMI
Empresa ABC Fornecedor XYZ
Web Services
Web Services

Solução para o grande problema de integração visto anteriormente.

Independe de tecnologia, sistema operacional e plataforma.

Qualquer aplicação pode chamar os serviços de outra aplicação.

Web Services usam protocolos e padrões abertos, baseados em


XML.

Constante processo de padronização pelo W3C e OASIS.

ASP Java
.NET Delphi
PHP WEB SERVICES

Empresa ABC Fornecedor XYZ


Web Services

Desenhada para ter um baixo acoplamento entre as partes.

Para se ter um baixo acoplamento, as partes devem concordar em:


Utilizar um formato de troca de mensagens em comum (SOAP)
Utilizar um protocolo em comum (HTTP)

Web Service é uma arquitetura orientada a serviços.

A interface é crucial – é o “contrato” entre o provedor e o cliente.

Web Services têm dois participantes: provedor do serviço e o


requisitante do serviço.

O requisitante O provedor oferece a


(cliente ou interface e a
consumidor) acessa implementação do
o Web Service. serviço.
arquitetura básica
Padrões Web Services
Padrões Web Services

Web Service é uma tecnologia baseado em padrões abertos.

HTTP

XML

SOAP

WSDL

UDDI

Outros...

Estes nomes de padrões são constantemente mencionados quando


se fala de Web Service.
Padrões Web Services

SOAP

O SOAP (Simple Object Access Protocol) é um protocolo de


comunicação, baseado em XML, trafegando, geralmente sobre HTTP.

Utilizado para comunicação e troca de dados entre aplicações


distintas.

Inicialmente criada pela Microsoft e IBM. Agora é padronizada pelo


W3C.

SOAP é um simples documento XML que contém os elementos:

Envelope, que identifica a mensagem SOAP;


Header, opcional, que contém informação de cabeçalho;
Body, que contém as informações da chamada e resposta;
Fault, opcional, que contém informações sobre erros.
Padrões Web Services

SOAP

SOAP pode seguir o modelo RPC e o modelo


de Documentos.

SOAP também suporta attchments (anexos).

Exemplo de documento SOAP


<?xml version="1.0"?>
<soap:Envelopexmlns:soap="http://www.w3.org/2001/12/soap-envelope"

soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Header> ... </soap:Header>
<soap:Body> ...
<soap:Fault> ... </soap:Fault>
</soap:Body>
</soap:Envelope>
Padrões Web Services

WSDL

WSDL (Web Services Description Language) é um documento XML


que descreve os Web Services de uma maneira estruturada.

WSDL descreve um ou mais serviços, como um conjunto de


endpoints.

Ele informa a interface de acesso, os tipos de dados usados e a


localização do serviço.

Os WSDLs são fornecidos pelos provedores de aplicativos de Web


Services.

A partir do WSDL fornecido geraremos os clientes dos Web Services.


Padrões Web Services

UDDI

UDDI (Universal Description, Discovery and Integration) é um serviço


que possibilita uma forma padrão, rápida e fácil de se encontrarem
Web Services, de acordo com seu interesse.

É uma espécie de lista de Web Services públicos fornecidos.

Hoje, várias empresas mantêm o serviço de registro e busca do UDDI.

UDDI Org
Microsoft
IBM
SAP
entre outras
Padrões Web Services

Conclusão

Imagine-se com fome.

Você procura no Google (UDDI) por um restaurante.

No restaurante você lê o cardápio (WSDL), para saber o que pedir.

Em seguida, você faz o pedido ao garçom (SOAP), que leva o pedido


até a cozinha (HTTP).

O cozinheiro prepara sua comida (Classe que implementa o serviço).

Depois de pronta, o garçom traz de volta sua comida (SOAP de


resposta).

É, basicamente, assim que funcionam os Web Services.


Web Services com Java
Web Services com Java

A plataforma J2EE oferece APIs e ferramentas para trabalhar com os


Web Services. Criar serviços e seus clientes.

A tecnologia Java oferece as seguintes APIs:

Java Web Services Developer Pack (Java WSDP)


Java API for XML-Based RPC (JAX-RPC)
Java API for XML Registries (JAXR)
Java API for XML Processing (JAXP)
Java Architecture for XML Binding (JAXB)
SOAP with Attachments API for Java (SAAJ)

Com estas APIs você não precisa saber como criar o SOAP.

Você só precisa saber utilizar as classes da API para criar e acessar


os Web Services.

Porém...
Web Services com Java

Desvantagens

O desenvolvimento de Web Services com estas APIs não é tão


simples.

A curva de aprendizado é grande.

Você deve conhecer várias classes, e saber como utilizá-las.

Então, como desenvolver Web Services mais facilmente???


Web Services com Apache Axis
W.S. com Apache Axis

Apache Axis é um framework para se construir processadores SOAP.

Com Axis é possível criarmos os serviços web e os clientes desses


serviços.

Axis fornece as ferramentas necessárias para trabalharmos com os


Web Services de forma fácil e simplificada.

Axis pode ser muito facilmente integrado à sua aplicação web,


independente do container (Tomcat, JBoss, outros).

Axis usa a API JAX-RPC internamente para trabalhar com SOAP.

O projeto Apache Axis é a terceira geração do Apache SOAP.

Atualmente está na versão 1.1 – versão 1.2 com melhorias em breve.


W.S. com Apache Axis

Instalando o Apache Axis

Vá até o site do Apache Axis: http://ws.apache.org/axis/

Faça o download da última versão (1.1) – arquivo zip.

Descompacte o zip no seu disco.

Crie a variável de ambiente %AXIS_HOME%.

Coloque todos os jars do diretório AXIS_HOME/lib no CLASSPATH.

* Certifique-se que você tenha o JAVA_HOME configurado.

Pronto!

Agora podemos trabalhar com os Web Services.


W.S. com Apache Axis

Server

Os Web Services são publicados através de servidores web.

O Apache Axis pode rodar em qualquer Web Container Java.

Usaremos o container Apache Tomcat.

Copie o diretório axis localizado em AXIS_HOME/webapps/ para o


diretório webapps do seu Tomcat.

Com isso temos o Axis instalado no Tomcat. Fácil!

Este diretório já contém as configurações básicas


do Axis.

Inicie o Tomcat e valide a instalação, clicando nos links disponíveis.


http://127.0.0.1:8080/axis/
W.S. com Apache Axis

Server - JWS

Como nosso primeiro Web Service, vamos disponibilizar um serviço


simples de soma, implementado pela classe abaixo:

public class Calculadora {

public int somar( int a, int b ) {


return a + b;
}

Esta classe pode ser publicada como um Web Service facilmente


como um endpoint JWS.

Para isto, basta renomear o arquivo .java para .jws e copiá-lo para a
pasta axis do webapps do seu Tomcat.
W.S. com Apache Axis

Server - JWS

Ao publicarmos o nosso JWS, iniciamos o Tomcat e vamos testá-lo.

Para acessar o Web Service da Calculador, aponte o navegador para:


http://127.0.0.1:8080/axis/Calculadora.jws

Aparecerá um link para visualizarmos o WSDL que é gerado


automaticamente pelo Axis.

É a partir deste WSDL que criaremos nosso cliente de acesso ao Web


Service da Calculadora.

Com estes passos bem simples temos nosso primeiro Web Service
publicado.
W.S. com Apache Axis

Server - JWS

Para classes de serviços bem simples, o JWS é suficiente, porém ele


tem algumas desvantagens:

Sempre precisamos ter o fonte Java disponível.

A classe não pode fazer parte de nenhum pacote.

Não pode utilizar outros tipos, senão os básicos do Java


(primitivos, wrappers e String).
W.S. com Apache Axis

Server Avançado

O Axis nos permite disponibilizar nossas classes como serviços web,


de forma mais completa e com maior flexibilidade, através de suas
ferramentas.

Para isso devemos nos familiarizar com o WSDD (Web Service


Deployment Descriptor) do Axis. O WSDD contém informações do
que você deseja publicar na sua aplicação Axis.

Geralmente teremos um arquivo chamado deploy.wsdd e um outro


chamado undeploy.wsdd, para fazer e desfazermos o deploy de
nossos Web Services.

O Axis nos fornece as ferramentas necessárias para podermos criar


todos estes arquivos de configuração, além de fazer o deploy de
nosso Web Service.
W.S. com Apache Axis

Server Avançado

Para iniciar, definimos a interface do nosso Web Service:

package bovespa;

public interface IStockQuote {


public String getHigherStock();
public double getStockQuote( String stock );
}

A partir desta interface, vamos gerar as classes do Web Service do


lado servidor e também os arquivos de configurações WSDL e
WSDD.
W.S. com Apache Axis

Server Avançado

Primeiro criamos o descritor do serviço (WSDL ) utilizamos a


ferramenta Java2WSDL:

java -cp org.apache.axis.wsdl.Java2WSDL -o StockQuote.wsdl


-l"http://127.0.0.1:8080/axis/services/StockQuote" -n
"urn:StockQuote" -p"bovespa.ws" "urn:StockQuote"
bovespa.IStockQuote

Em seguida, criamos as classes do servidor e os WSDD com a


ferramente WSDL2Java:

java org.apache.axis.wsdl.WSDL2Java -o ./src -s -S


true -Nurn:StockQuote bovespa.ws StockQuote.wsdl

Agora já temos todas as classes e arquivos gerados pelo Axis.


W.S. com Apache Axis

Server Avançado

A ferramenta do Axis gerou as classes Stub e Skeleton baseada na


nossa interface IStockQuoteWS.

Os Stubs são as classes que ficam no lado cliente e que invocam o


Web Service.

O Skeleton é a classe que é invocada no lado servidor quando o Web


Service é solicitado.

Uma classe de implementação do nosso Web Service também é


criada.

Nesta classe podemos delegar a chamada aos métodos para a nossa


classe que realmente implementa a funcionalidade.
W.S. com Apache Axis

Server Avançado

Agora vamos disponibilizar o nosso Web Service.

Primeiro, copiamos os binários (.class) para o diretório classes da


nossa aplicação no Tomcat (ou no lib sob a forma de um jar).

Reiniciamos o Tomcat.

Em seguida, executamos o comando do Axis para, de fato, fazer o


deploy:

java org.apache.axis.client.AdminClient ./
src/bovespa/ws/deploy.wsdd

O programa AdminClient faz o deploy baseado no WSDD informado.


W.S. com Apache Axis

Após feito o deploy do nosso Web Service, podemos acessá-lo, via


browser, para fins de teste, da seguinte maneira:

Apontar o navegador para: http://127.0.0.1:8080/axis/

Clicar sobre o link: “View all deployed services”.

E então escolher o serviços disponível.


W.S. com Apache Axis

Client

Os clientes do nosso Web Service poderão gerar os clientes de


acesso a partir do WSDL que é fornecido pelo Axis, como o que
vimos pelo próprio navegador web.

Portanto, não necessitamos fornecer nenhum tipo de código para os


interessados em acessar nosso serviço.

Mas, e se quisermos acessar algum Web Service por aí, ou mesmo


um Web Service que nós publicamos.

A ferramenta WSDL2Java, que já vimos, gera as classes de Stub pra


nós.
W.S. com Apache Axis

Client

Imagine que queremos acessar o nosso primeiro Web Service de


Calculadora.

Vamos então gerar as classes Stub para o cliente acessar o Web


Service.

Primeiro acessamos o WSDL do Web Service e o salvamos em disco.


Em seguida utilizamos a ferramenta para gerar o cliente:

java org.apache.axis.wsdl.WSDL2Java Calculadora.wsdl


-o src
W.S. com Apache Axis

Client

Utilizando as classes geradas, vamos fazer um teste de acesso ao


Web Service:

CalculadoraServiceLocator loc = new CalculadoraServiceLocator();


Calculadora calc = loc.getCalculadora();
int result = calc.somar( 1, 2 );
System.out.println( result );
Para finalizar

Com isso podemos ter uma idéia do que é possível fazer com o
Apache Axis, podendo irmos além do que foi apresentado.

O Apache Axis ainda pode ser mais produtivo trabalhando com a


ferramenta Ant, que oferece tasks das ferramentas do Axis.

Para maiores informações:

Apache Axis:
http://ws.apache.org/axis/

Web Services e SOAP


http://www.w3c.org
Fim

OBRIGADO!

Daniel Destro do Carmo


danieldestro@uol.com.br

Você também pode gostar