Serviços Web

De Aulas

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:

  1. Fazer download do Tomcat no site do Apache Tomcat. Procure pegar o arquivo ZIP.
  2. 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

  1. Fazer download da última versão do Axis;
  2. Descompactar o arquivo do Axis;
  3. Dentro da pasta webapps, você encontra a pasta axis.
    1. Copiar essa pasta para o diretório webapps do tomcat.
  4. 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.