Serviços Web
Links relacionados: Programação Paralela e Distribuída
Introdução
A tecnologia de Serviços Web (Web Services) é uma solução utilizada na integração de sistemas e na comunicação entre aplicações diferentes. Com esta tecnologia é possível que novas aplicações possam interagir com aquelas que já existem e que sistemas desenvolvidos em plataformas diferentes sejam compatíveis.
Os Web services são componentes que permitem às aplicações enviar e receber dados em formato XML. Cada aplicação pode ter a sua própria "linguagem", que é traduzida para uma linguagem universal, o formato XML.
Os Web services são descritos em WSDL (Webservice Description Language), um padrão baseado em XML para descrever o serviço, juntamente com seus métodos. Essa funciona como uma espécie de “TypeLibrary” do Webservice alem de ser usado para a validação das chamadas dos métodos.
Os Web services podem ser armazenados em um serviço de registro UDDI (Universal Description, Discovery and Integration), que é um Web Service que gerencia informação sobre provedores, implementações e metadados de serviços. Os provedores de serviços podem utilizar o UDDI para publicar os serviços que eles oferecem. Os usuários de serviços podem usar o UDDI para descobrir serviços que lhes interessem e obter os metadados necessários para utilizar esses serviços.
Para trabalhar com Web Services nesta disciplina, usaremos o Apache Axis, que é um framework de código aberto, baseado na linguagem Java e no padrão XML, utilizado para construção de web services no padrão SOAP.
O Axis disponibiliza dois modos para "expor" os métodos de uma classe através de web services. O modo mais simples utiliza os arquivos JWS (Java Web Service) do Axis. O outro método utiliza um arquivo WSDD (Web Service Deployment Descriptor), que descreve com detalhes como serão criados os web services a partir dos recursos (classes Java) existentes.
Também é possível, através do Axis, gerar automaticamente o arquivo WSDL (Web Service Description Language). O WSDL contém a definição da interface dos web services.
Instalação e Execução do Tomcat
Para instalar o Apache Tomcate, é necessário:
- Fazer download do Tomcat no site do Apache Tomcat. Procure pegar o arquivo ZIP.
- Instalar ou descompactar em um diretório. Por exemplo: C:\tomcat\
Para a execução, é necessário configurar as seguintes variáveis de ambiente:
JAVA_HOME=diretorio_home_do_java_jdk JRE_HOME=diretorio_home_do_java_jre
depois disso, dentro do diretório bin do apache, executar:
No Windows:
catalina.bat run
No Linux:
./catalina.sh run
Instalação do Axis
- Fazer download da última versão do Axis;
- Descompactar o arquivo do Axis;
- Dentro da pasta webapps, você encontra a pasta axis.
- Copiar essa pasta para o diretório webapps do tomcat.
- Reinicializar o Tomcat
Exemplo de Web Service: Calculadora
Como exemplo, temos o seguinte código em Java, que possui um único método chamado soma. Este tem do is parâmetros de entrada inteiros e retorna um inteiro como resultado.
1public class Calculadora {
2 public int soma(int a, int b) {
3 return a + b;
4 }
5}
Salve o código acima com o nome de Calculadora.jws dentro do diretório Axis dentro do Tomcat, criado anteriormente.
Para a verificação do Web Service criado, acesse o sguinte link no navegador:
http://localhost:8080/axis/Calculadora.jws?wsdl
Para testar o Web Service, vamos executar o metodo soma com os dois parâmetros requeridos:
http://localhost:8080/axis/Calculadora.jws?method=soma&a=3&b=5
Usando o Web Service por meio de um programa Java
Para acessar o Web Service criado, por meio de um programa java, é necessário adicionar as bibliotecas necessárias no Eclipse (se for o caso) ou manualmente, assim como os imports necessários para a aplicação java.
1import javax.xml.namespace.QName;
2import javax.xml.rpc.Call;
3import org.apache.axis.client.Service;
4
5class UsaTeste {
6 public static void main(String[] args) {
7 try {
8 String wsLink = "http://localhost:8080/axis/Calculadora.jws";
9 Service service = new Service();
10
11 QName port = new QName(wsLink, "Calculadora");
12 QName operation = new QName(wsLink, "soma");
13
14 Call call = service.createCall(port, operation);
15 call.setTargetEndpointAddress(wsLink);
16
17 Object[] params = { 2, 8 };
18 Integer out = (Integer) call.invoke(params);
19
20 System.out.println(out);
21 } catch (Exception e) {
22 e.printStackTrace();
23 }
24 }
25}
Salve o programa como UsaTeste.java no local de sua preferência ou no projeto de uma aplicação Java criado no Eclipse.
Para podermos compilar e executar a aplicação no Eclipse, é necessário ir nas propriedades do projeto, ir em Java Build Path, Libraries e Add External JARs. Procure pelo diretório WEB-INF/lib dentro do diretório axis que foi colocado no diretório do Tomcat e adicione todas as bibliotecas JAR que estão ali.