You are on page 1of 26

Web Services

Utilizando JWSDP
JWSDP,
Tomcat e Axis
I t d
Introduo
A utilizao do conjunto de ferramentas
(JWSDP,Tomcat e Axis) facilita muito o
desenvolvimento de Web Services
poupando o gasto de tempo
desnecessrio com a criao de XMLs
complexos, a implementao da
comunicao atravs do protocolo SOAP
e a gerao de WSDLs.
Softwares Necessrios

J2SE Development Kit (JDK) 5.0: jdk-


1_5_0_06-windows-i586-p.exe
p
JWSDP 2.0: jwsdp-2_0-windows-i586.exe
Tomcat 55.0
0 para JWSDP: tomcat50-
tomcat50
jwsdp.zip
Apache
A h AAxis
i 1
1.3:
3 axis-bin-1_3.zip
i bi 1 3 i
JWSDP
O JWSDP (Java Web Services Developer
Pack) um conjunto gratuito de ferramentas
que pode ser usado para construir, testar e
desenvolver aplicaes XML, Web services, e
aplicaes Web com as ltimas tecnologias de
Web Service e padres de implementao.
T
Tomcat
t 5.0
5 0 para JWSDP
O Tomcat um servidor de aplicaes
Java p
para web.
Tomcat 5.0 para JWSDP um container
Web baseado no Tomcat 5 5.0.19
0 19 que
implementa as especificaes Java Server
Pages 22.0
0 e Java Servlet 2
2.4.
4
A
Apache
h AAxis
i
Apache Axis uma implementao Open
Source cliente/servidor do SOAP ("Simple
( p
Object Access Protocol") padro do W3C.
Framework que facilita o desenvolvimento
de Web Services fornecendo APIs que
facilitam o processo de comunicao
comunicao.
I t l
Instalao
1. Baixe os arquivos necessrios atravs dos links obtidos no slide
Softwares Necessrios.
2. Instale o J2SE Development Kit (JDK) 5.0.
3
3. Descompacte o tomcat50-jwsdp.zip
tomcat50 jwsdp zip aonde desejar.
desejar
4. Ento instale o JWSDP, na tela Select a Web Container, clique
no boto Browse e selecione a pasta tomcat50-jwsdp que foi
descompactada, assim voc estar utilizando como container
para o JWSDP o Tomcat 5.0, na tela Create a Tomcat user
digite o usurio e senha que desejar.
5. Descompacte o axis-bin-1_3.zip aonde desejar.
6
6. Copie a pasta axis-1_3\webapps\axis
axis-1 3\webapps\axis descompactada para dentro
do diretrio \webapps do Tomcat.
V lid d a IInstalao
Validando t l
Para verificar se a instalao ocorreu
corretamente, inicialize o servidor Tomcat,
clicando no Menu Inciar -> Programas -> Sun
Microsystems -> Java(TM) Web Services
Developer Pack 2.0 -> Start Tomcat e entre no
seguinte endereo:
http://127.0.0.1:8080/axis/
Se a instalao
foi bem sucedida aparecer
p uma
pgina com o ttulo Apache-AXIS e com a frase
Hello! Welcome to Apache-Axis.
Implementando o primeiro Web
Service utilizando JWS
Como nosso primeiro Web Service, vamos disponibilizar um servio
simples de soma, implementado pela classe abaixo:

public class Calculadora {


public int somar( int a, int b ) {
return a + b;
}
}

Esta
sta cclasse
asse pode se
ser pub
publicada
cada co
como
ouum Web
eb Se
Service
ce facilmente
ac e te
como JWS. Para isto, basta renomear o arquivo .java para .jws e copi-
lo para a pasta axis do webapps do seu Tomcat.
JWS
Ao publicarmos o nosso JWS, iniciamos o Tomcat e vamos test-lo.
Para acessar o Web Service da Calculadora, aponte o navegador
para:
http://127 0 0 1:8080/axis/Calculadora jws
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.
JWS
Para classes de servios bem simples, o JWS
suficiente, porm ele tem algumas
desvantagens:
Sempre precisamos ter o fonte Java disponvel.
A classe no pode fazer parte de nenhum
pacote.
t
No pode utilizar outros tipos, seno os bsicos
do Java (primitivos
(primitivos, wrappers e String)
String).
D
Desenvolvendo
l d o Cli
Cliente
t
Desenvolvimento da aplicao que ir consultar o
servio disponvel no servidor.
Essa aplicao
p p poder ser de diversos tipos.
p A seguir
g
apresentado o cdigo fonte de uma classe que faz a
criao dos objetos do Axis para acesso a um servio
Web.
Considerando que essa classe poder ser instanciada
dentro de um mtodo init() de um servlet ou dentro do
mtodo public static void main(), diversos tipos de
aplicao em Java poder fazer uso dela
dela.
Caso esteja utilizando uma IDE Java, certifique-se que a
biblioteca AXIS.jar esteja contida no projeto.
Arquivo WSCliente.java

public class WSCliente {


private org.apache.axis.client.Call call; // Atribs da classe
private org.apache.axis.client.Service
p g p service; // Atribs da classe
/** Mtodo construtor da Classe WS */
public WSCliente(){
// Cria o objeto de servio
service = new org.apache.axis.client.Service();
try {
// Cria o objeto de chamada
call = (org
(org.apache.axis.client.Call)
apache axis client Call) service
service.createCall();
createCall();
}
catch (Exception ex) {
System out println("Erro
System.out.println( Erro na criao do servio
servio. Detalhes: "
+ ex.getMessage());
}
}
/** Mtodo para definio do servio */
public void defineServicoSoma(){
// Seta o nome do mtodo a ser executado
call.setOperationName("getSoma");
p (g )
// Adiciona os parmetros
call.addParameter("a", org.apache.axis.encoding.XMLType.XSD_INTEGER,
javax.xml.rpc.ParameterMode.IN);
call.addParameter("b",
( org.apache.axis.encoding.XMLTYPE.XSD_INTEGER,
g p g _
javax.xml.rpc.ParameterMode.IN);
// Seta o endereo do servio
String uri = http://localhost:8080/axis/Calculadora.jws
call.setTargetEndpointAddress(uri);
g p ( )
// Seta o tipo de retorno
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_INT);
}
}
/** Mtodo para execuo do servio */
public Integer executaServicoSoma(Integer a, Integer b){
Integer retorno = null;
// Cria array de objeto para passar os args
Object[] val = new Object[]{a,b};
try {
// Invoca o mtodo call com o array de args
// Efetua converso do tipo Object para Integer
retorno = (Integer) call.invoke(val); }
catch (java.rmi.RemoteException ex) { }
return retorno;
}
}
S
Server A
Avanado
d
O Axis nos permite disponibilizar nossas classes como servios web,
de forma mais completa e com maior flexibilidade, atravs de suas
ferramentas.
Para isso devemos nos familiarizar com o WSDD (Web Service
Deployment Descriptor) do Axis. O WSDD contm informaes do
que voc deseja publicar na sua aplicao Axis.
Geralmente teremos um arquivo chamado deploy.wsdd
deploy wsdd e um outro
chamado undeploy.wsdd, para fazer e desfazermos o deploy de
nossos Web Services.
O Axis nos fornece as ferramentas necessrias para podermos criar
todos estes arquivos de configurao, alm de fazer o deploy de
nosso Web Service.
S
Server A
Avanado
d
Para iniciar, definimos a interface do nosso Web
Service:
package bovespa;
public interface IStockQuote {
public String
p gggetHigherStock();
g ();
public double getStockQuote( String stock );
}
A partir desta interface, vamos gerar as classes do
Web Service do
lado servidor e tambm os arquivos de
configuraes WSDL e WSDD.
S
Server A
Avanado
d
Primeiro criamos o descritor do servio (WSDL )
utilizamos a ferramenta Java2WSDL:
java -cp org.apache.axis.wsdl.Java2WSDL -o
StockQuote.wsdl -
l"htt //127 0 0 1 8080/ i /
l"http://127.0.0.1:8080/axis/services/StockQuote"
i /St kQ t "
n "urn:StockQuote" -p"bovespa.ws"
"urn:StockQuote
urn:StockQuote bovespa.IStockQuote
bovespa IStockQuote
S
Server A
Avanado
d
Em seguida, criamos as classes do servidor e os
WSDD com a ferramenta WSDL2Java:
java org.apache.axis.wsdl.WSDL2Java -o ./src -s
S true -Nurn:StockQuote bovespa.ws
St kQ t
StockQuote.wsdldl

Agora j temos todas as classes e arquivos


gerados pelo Axis.
S
Server A
Avanado
d
A ferramenta do Axis gerou as classes Stub e Skeleton baseada na
nossa interface IStockQuoteWS.
Os Stubs so 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 implementao do nosso Web Service tambm
criada.
Nesta classe podemos delegar a chamada aos mtodos para a nossa
classe que realmente implementa a funcionalidade
funcionalidade.
S
Server A
Avanado
d
Agora vamos disponibilizar o nosso Web Service.
Primeiro, copiamos os binrios (.class) para o diretrio classes da
nossa aplicao 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
org.apache.axis.client.AdminClient
apache axis client AdminClient
./src/bovespa/ws/deploy.wsdd
O programa AdminClient faz o deploy baseado no WSDD
informado.
S
Server A
Avanado
d
Aps feito o deploy do nosso Web Service,
podemos acess-lo, via browser, para fins de
teste, da seguinte maneira:
Apontar o navegador para:
htt //127 0 0 1 8080/ i /
http://127.0.0.1:8080/axis/
Clicar sobre o link: View all deployed services.
E ento escolher o servios disponvel.
Cli t
Cliente
Os clientes do nosso Web Service podero gerar os clientes de
acesso a partir do WSDL que fornecido pelo Axis, como o que
vimos pelo prprio navegador web.
Portanto, no necessitamos fornecer nenhum tipo de cdigo para
os
interessados em acessar nosso servio.
Mas e se quisermos acessar algum Web Service por a
Mas, a, ou
mesmo
um Web Service que ns publicamos.
A ferramenta WSDL2Java, que j vimos, gera as classes de Stub
pra
ns.
Fi li
Finalizando
d
Com isso podemos ter uma idia de
como desenvolver Web Services de
forma mais prtica e mais rpida.
M i
Maiores iinformaes
f
Apache Axis:
http://ws apache org/axis/
http://ws.apache.org/axis/
Web Services e SOAP
htt //
http://www.w3c.org
3
?
FIM