quarta-feira, 9 de outubro de 2013

Criando Web Service utilizando o “Eclipse Juno"

A ideia deste artigo não é explorar conceitos mais profundos de “Web Services” e sim utilizar as ferramentas essenciais utilizando a linguagem Java. Para apenas relembrar os conceitos básicos do funcionamento de um “Web Service”, é importante ter em mente que sua principal função é de compartilhar, integrar dados entre sistemas de diferentes tipos de plataformas (Windows, Unix, Mac, MainFrame) e linguagens distintas (C#, VB, Java, Cobol, PHP, Delphi). O “Web Service” funciona como elo entre dois sistemas, pois é baseado em tecnologias abertas (XML e SOAP) que são reconhecidas em todas as plataformas descritas anteriormente. Para entendermos melhor iremos supor que a empresa The Club possui um sistema interno com todos os dados dos sócios e este possui relação com outros tipos de dados que precisaremos exibi-los em nosso site, sem precisarmos duplicar estas informações, a criação de um “Web Service” entra em ação neste momento. Resolveremos este tipo de situação programando um “Web Service” no servidor principal e disponibilizaremos o endereço URL do mesmo para o Site, ficando sempre atualizado e evitando o re-trabalho destas tarefas.

Funcionamento de um “Web Service”

Para entender o funcionamento de um “web service”, vamos supor que um cliente faz uma solicitação HTTP simples pelo navegador e o servidor onde está o “Web Service” faz um retorno com os dados processados em formato XML, de acordo com o arquivo WSDL. 

Ver Imagem 01 para maiores detalhes.

Figura 01: Funcionamento de um “Web Service”.

Tendo em mente este conceitos básicos podemos dar continuidade ao artigo, então, mãos a obra.

Pré-Requisitos

Teremos que instalar e configurar algumas ferramentas, sendo:


1) Eclipse Juno: Ferramenta IDE para desenvolvimento do “Web  Service”.
2) Apache Axis2: Framework para construção de “Web Services” no padrão SOAP.
3) Apache Tomcat: Servidor para publicar o “Web Service”.

Abaixo irei dar uma breve descrição sobre suas funcionalidades, onde baixá-los e a instalação e configuração necessária para um bom funcionamento. Todas estas ferramentas são freewares (gratuitas).

1) Eclipse Juno

É uma das principais IDEs de desenvolvimento Java, se tornando uma referência no desenvolvimento de softwares em geral. Esta versão Juno é uma das últimas lançadas (fim de junho de 2012), sendo que achei necessário destacar algumas características como o uso do Eclipse 4.x como plataforma, sendo que todas as versões anteriores ao Juno se embasavam na versão 3.x. A plataforma 4.x, que vem se desenvolvendo há algum tempo, apresenta mudanças significativas em alguns aspectos operacionais da IDE. Isso apresenta um desempenho melhor e um código mais limpo. É importante lembrar que apesar destas mudanças de plataforma, existirá compatibilidade para plug-ins desenvolvidos para a versão 3.x. Outro detalhe importante nesta versão é o suporte completo a versão 7 (sete) do Java, garantindo que o compilador já implementa por padrão todas as funcionalidade desta nova versão da linguagem, bem como o conjunto de ferramentas de desenvolvimento. Resumindo, para trabalharmos com desenvolvimento de “Web Services” esta ferramenta se comportou com total compatibilidade e facilidade.

Download

O download poderá ser realizado no link abaixo:
http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/juno/SR1/

Ver Imagem 02 para maiores detalhes.
  

Figura 02: Download do Eclipse.

Recomendo utilizar a opção “South America” para realizar o download.

Instalação

Importante: Antes de instalar o Eclipse é necessário possuir instalado o Java. 

Recomendo criar uma pasta no “C:\Softwares” para uma melhor organização de agora em diante. Todos os arquivos do Eclipse serão descompactados nesta pasta. Não existe instalação em si, apenas extraia os arquivos para podermos utilizá-lo daqui para frente. O nome da pasta contendo os arquivos deverá chamar “eclipse-jee-juno-SR1-win32” ou algo parecido. Arraste um atalho do executável para onde desejar trabalhar.

2) Apache Axis2

O Apache Axis2 é utilizado para fornecer e consumir “Web Services”. Pode funcionar como um “facilitador” de serviços Web embutido em outro software suportando o padrão “SOAP 1.1”, “SOAP 1.2” e o “REST”. Através do Axis2 os desenvolvedores podem criar aplicações distribuídas. Além da versão para Java, é importante salientar que existe uma implementação baseada na linguagem “C++” (Não iremos entrar em detalhes neste artigo). Através do Axis2 podemos gerar automaticamente o arquivo “WSDL” (Web Service Description Language) contendo as definições da interface dos “Web “Services”.

Download

O download deverá ser realizado no link:
http://axis.apache.org/axis2/java/core/download.cgi#std-bin

A Figura 03 nos dá mais detalhes.

 

Figura 03: Download do Axis2.

Localize a região “1.6.x releases” que significa as últimas versões lançadas, e em “Distribution” baixe a versão “Binary Distribution” escolhendo a extensão “zip”. 

Instalação

Apenas descompacte a pasta dos arquivos e salve na pasta “C:\Softwares”. O nome deverá ficar parecido com “axis2-1.6.2-bin”. 

3) Apache Tomcat

O Tomcat é um Servidor de Aplicações Java (“Conteiner Servlet”), servindo para interpretar aplicações escritas em Java para Web. Para quem não sabe, ele foi desenvolvido pela “Apache Software Foundation”. O Tomcat também possui outras características como atuar integrado a um servidor web dedicado como o Apache ou o “IID” (“Internet Information Service”), provendo um servidor web “HTTP” puramente em Java. Inclui ferramentas para configuração e gerenciamento.

Download

O Download poderá ser efetuado no link:
http://tomcat.apache.org/download-60.cgi

Ver Imagem 04.

Figura 04: Download do Tomcat.

Deslize a página até localizar a região 6.0.37 (significa a última versão até a data da publicação deste artigo). Em “Binary Distributions” (Distribuições em formato Binário) o item “Core” no meu caso utilizei a “32-bit Windows zip (PGP, md5)” que significa versão 32 Bits para o S.O. Windows. 

Instalação

Para realizar a instalação basta descompactar o arquivo que foi baixado anteriormente e salvá-lo em uma pasta. O nome do arquivo baixado deverá ficar idêntico a “apache-tomcat-6.0.37-windows-x86”.

Importante: Localize a pasta “\bin” do “axis2” em “C:\Softwares\axis2-1.6.2\bin” para copiarmos todos os arquivos contidos e colarmos todas as referências na pasta “\Lib” do “apache tomcat” em “C:\Softwares\apache-tomcat-6.0.37\lib”. Estes procedimentos foram necessários para termos acesso ao framework do Axis2 em nosso servidor de aplicações. 

Ver Figura 05 todos os programas essenciais.

Imagem 05: Softwares Instalados.

Preparando o ambiente de desenvolvimento

Neste momento é onde iremos configurar todo o ambiente de desenvolvimento. No primeiro momento vou configurar o Axis2 e logo em seguida o servidor Tomcat. Deveremos abrir o Eclipse Juno e clicar no item de menu “Window/Preferences”. No menu lateral esquerdo deve-se ir na opção “Webservices/Axis2 Preferences”. Ver Imagem 06.

Figura 06: Axix2 Preferences.

Nesta parte teremos duas opções, sendo: “Axis2 Run Time” (Axis2 em tempo de execução) e “Axis2 Preferences” com inúmeras configurações a serem abordadas. Clique na primeira opção e coloque o caminho onde o Axis2 foi instalado. Logo abaixo irá aparecer uma mensagem indicando que a configuração foi realizada com sucesso. Já na aba “Axis2 Preferences” marque a opção “Generate an Interface for Skeleton” para gerar apenas uma interface para o lado do servidor.
Na opção do menu na lateral esquerda localize o item “Webservice/Server and RunTime”. Ver Imagem 07.

Figura 07: Server and RunTime.

Aqui iremos selecionar em “Server RunTime” a versão 6 do servidor “Apache Tomcat” e em “Web service runtime” o framework “Apache Axis2”.Clique no botão “Apply” para finalizar esta etapa.
Agora deveremos configurar o Tomcat6. Para isto deveremos selecionar novamente a opção “Window/Preferences” e localizar a opção “Server/Runtime Environments” que significa executar ambientes em tempo de execução. Clique em “Add’ e selecione a versão 6 do Apache Tomcat. Ver Imagem 8. Clique em “Next”.

Figura 08: Selecionando o servidor Apache Tomcat.

Na próxima tela de configuração teremos o nome como: “Apache Tomcat v6.0”, o local onde deveremos indicar onde o Tomcat foi instalado e a versão do Eclipse que iremos trabalhar. Clique em “Finish” para encerrar esta etapa. Ver Imagem 09.

Figura 09: Configurações gerais do Tomcat.

Voltando para tela principal do Eclipse, localize na região inferior a aba chamada “Servers”. É exatamente aqui que adicionaremos o servidor Apache Tomcat. Clique com o botão direito Escolhendo “New/Server”. Ver Imagem 10. 

Figura 10: Adicionando o servidor.

Na próxima tela escolha em “Server Runtime Environment“ o servidor previamente configurado e clique em “Finish”. 

Criando o Exemplo

Deveremos clicar em “File/New/Other...” navegar até a aba Web/Dynamic Web Project”. Clique em “Next” para darmos continuidade. Ver Imagem 11. 

Figura 11: Criando um “Dynamic Web Project”. 

Em “Project name” defina como “webservicetc”. Escolha um local para ser salvo o projeto em “Project location”. Em “Target runtime” por padrão estará configurado o servidor Apache Tomcat 6 configurado anteriormente. Usaremos a última versão em “Dynamic web module version” e em “Configuration” teremos que modificar alguns parâmetros, para isto clique em “Modify...”. Ver Imagem 12.

Figura 12: Configurações.

Adicione o Item “Axis2 Web Services” para usarmos ao decorrer do desenvolvimento todas as extensões instaladas do Axis2. Finalizamos este processo clicando em “Ok”.  

Codificando o exemplo

O nosso “Web Service” funcionará da seguinte forma. Teremos uma classe com os dados dos clientes chamada“Clientes.java” e outra “TheClubWS.java” para carregarmos a classe Cliente e retorná-la em formato XML.

Classe “Clientes.java” 

Localize no projeto a pasta “Java Resources/src” para criarmos um pacote chamado “theclub”. Para quem não sabe, clique com o botão direito e escolha “New/Package”. Dentro deste pacote é onde a classe “Clientes.java” deverá estar localizada. Criaremos alguns atributos como: Id, Nome, Tipo, Cidade. Programe corretamente os métodos “Get” e “Set” para posteriormente podermos obter e devolver  valores. Ver Listagem abaixo:


package theclub;

public class Clientes
{
         private int Id;
         private String Nome;
         private String Tipo;
         private String Cidade;
       
         public int getId()
         {
              return Id;
         }

         public void setId(int id)
         {
              Id = id;
         }

         public String getNome()
         {
              return Nome;
         }

         public void setNome(String nome)
         {
              Nome = nome;
         }

         public String getTipo()
         {
              return Tipo;
         }

         public void setTipo(String tipo)
         {
              Tipo = tipo;
        }

         public String getCidade()
         {
              return Cidade;
         }

         public void setCidade(String cidade)
         {
              Cidade = cidade;
         }
       
         public Clientes()
         {
       
         }
}

 

Classe TheClubWS.java

Repetimos o processo descrito acima para implementarmos a classe “TheClubWS.java”. Vamos criar um método que terá como retorno uma lista de Clientes. Ver código abaixo:


package theclub;

Importe as bibliotecas para trabalharmos com Listas e Vetores do tipo Listas respectivamente.

import java.util.ArrayList;
import java.util.List;

public class TheClubWS
{  
      public List<Clientes> SelecionarClientes()
      {
          List<Clientes> list = new ArrayList<Clientes>();
           try
           {
               Clientes clientes1 = new Clientes();
               clientes1.setId(1);
               clientes1.setNome("Thiago");
               clientes1.setTipo("Físico");
               clientes1.setCidade("Avaré");
                list.add(clientes1);
                
                Clientes clientes2 = new Clientes();
               clientes2.setId(2);
               clientes2.setNome("Marcos");
               clientes2.setTipo("Físico");
               clientes2.setCidade("Avaré");
                list.add(clientes2);
           
                Clientes clientes3 = new Clientes();
               clientes3.setId(3);
               clientes3.setNome("Vitor");
               clientes3.setTipo("Físico");
               clientes3.setCidade("Avaré");
                list.add(clientes3);
           
                Clientes clientes4 = new Clientes();
               clientes4.setId(4);
               clientes4.setNome("The Club");
               clientes4.setTipo("Jurídico");
               clientes4.setCidade("Avaré");
                list.add(clientes4);
            
              return list;
            
          }
           catch (Exception e)
           {
              return null;
           }
       
      }
   
}

 

O método SelecionarClientes() terá como retorno uma variável do tipo lista de Clientes. Alimentaremos a classe Clientes com alguns dados e armazenaremos o resultado em uma variável do Tipo ArrayList. 

Na aba Project Explorer clique com o botão direito sobre a classe “theClubWS” e localize a opção “Web Services/Create Web Service”. Ver Imagem 13.

Figura 13: Gerando o “Web Service”.

Nesta tela temos algumas informações do lado servidor como Tipo, Implementação, demonstrativo de configurações do servidor Tomcat, do framework Axis2 e do projeto em questão. Temos também configurações do lado cliente, que por padrão deixaremos como “No Client”. Clique em “finish” para finalizar a etapa de criação do “web service”. Rode a aplicação de exemplo e terá uma tela parecida com a Imagem 14.

Figura 14: Run On Server.

Nesta tela teremos opções de escolher o servidor Apache Tomcat que já está pré-configurado ou definir um novo servidor. Deixaremos como padrão clicando no botão Finalizar. A Figura 15 é a tela de boas vindas e indica que tudo ocorreu corretamente. A opção “Services” nos dará maiores detalhes sobre os “web services” rodando no momento. 

Figura 15: Tela de Boas Vindas.

A Figura 16 nos dá uma descrição completa do “Web Service”, como por exemplo, o local onde está publicado, o status e todas as operações disponíveis. Clique sobre o “TheClubWS” para conferir o XML correspondente.

Figura 16: Descritivo do Serviço.

Enfim teremos o endereço para consumir o “web service”.
http://localhost:8080/webservicetc/services/TheClubWS?wsdl 

A Figura 17 nos mostra todo o código XML.

Figura 17: XML Correspondente. 

Podemos consumir este serviço em qualquer plataforma ou linguagem de programação como foi dito no começo do artigo. Basta atribuir o endereço citado anteriormente que será listado os métodos contidos neste serviço, no caso será listado o método SelecionarCliente(), tendo como retorno uma lista de dados dos Clientes. Por exemplo, utilizando o Microsoft Visual Studio (Para maiores detalhes recomendo a leitura do artigo “Asp.Net – Trabalhando com Web Services”, que poderá ser conferido no mês 05/2013) teremos um retorno idêntico ao da Figura 18.

Figura 18: Consumindo ‘Web Service”. 

Conclusão

Utilizando a linguagem Java, aprendemos neste artigo um pouco sobre todas as ferramentas necessárias para construir “Web Services”. Envolvemos a versão Juno do Eclipse, o servidor de aplicação Web Apache Tomcat e o framework Axis2 para publicação no padrão SOAP. Exploramos deste o download até a instalação e configuração no ambiente de desenvolvimento. Montamos também um pequeno exemplo envolvendo os conceitos fundamentados ao decorrer deste artigo.
Espero que tenham gostado um forte abraço e até o mês que vem!