Criando um Web Service em Java utilizando Apache Axis2 e Eclipse

Web services são componentes da aplicação que se comunicam utilizando protocolos abertos. Usando Web Services nós podemos disponibilizar nossas funcionalidades da aplicação para qualquer um. Neste tutorial provê instruções passo a passo para desenvolver Web Services utilizando Web Services Axis2 / SOAP / WSDL e a IDE Eclipse. Vamos começar.

1. Configurando o Ambiente de Desenvolvimento

1.1 Primeiro você precisa configurar o ambiente de desenvolvimento. Os passos a seguir são necessários se você deseja criar um Web Service utilizando Axis2 e a IDE Eclipse.

Algumas versões do eclipse alguns problemas de compatibilidade com Axis2. Este tutorial é testado com Apache Axis2 1.5.2, Eclipse Helios e Apache Tomcat 6.

1) Apache Axis2 Distribuição Binary – Download
2) Apache Axis2 Distribuição WAR – Download
3) Apache Tomcat – Download
4) Eclipse IDE – Download
5) Java instalado no seu computador – Download

1.2. Então você precisa setar as variáveis de ambiente para o Java e Tomcat. Segue as variáveis que devem ser adicionadas:

JAVA_HOME : Sete o valor do diretório do jdk (ex.: C:\Program Files\Java\jdk1.6.0_21)
TOMCAT_HOME : Sete o valor do diretório da sua instalação do Tomcat(ex.: D:\programs\apache-tomcat-6.0.29)
PATH : Sete o valor do diretório bin do seu jdk (ex.: C:\Program Files\Java\jdk1.6.0_21\bin)

1.3. Agora você precisa adicionar o ambiente de execução no eclipse. Vá em Windows > Preferences > Server > Runtime Environments.

Selecione o Apache Tomcat v6.0 e na próxima tela, procure o diretório da instalação do Apache e clique em finish.

1.4. Então clique em Web Service > Axis2 Preferences e procure o diretório do Apache Axis2.

2. Criando o Web Service utilizando a abordagem Bottom-Up (de baixo para cima)

2.1 Primeiro crie um novo Dynamic Web Project (File > New > Other…) e selecione Web > Dynamic Web Project.

2.2 Sete o Apache Tomcat como o Target Runtime e clique em Modify para instalar o Axis2 Web Services no Project Facet.

2.3 Selecione o Axis2 Web Services

2.4 Clique em OK e Próximo. Então você pode escolher as pastas e clique em Finalizar quando estiver feito.

3. Criando a Classe Web Service

Agora você pode criar uma classe Java que você queira expor como Web Service. Eu vou criar uma nova classe chamada FirstWebService e criar um método public chamado addTwoNumbers que recebe 2 inteiros como parâmetro e retorna a adição dos mesmos.

3.1 Clique com o botão direito em  MyFirstWebService no Project Explorer e selecione New > Class e dê  um nome adequado ao pacote e a classe. Eu coloquei o nome do pacote de com.sencide e FirstWebService ao nome da classe.

package com.sencide;
public class FirstWebService {
 public int addTwoNumbers(int firstNumber, int secondNumber){
  return firstNumber + secondNumber;
 }
}

3.2 Agora, selecione File > New > Other e escolha Web Service.

3.3 Selecione a classe FirstWebService como service implementation e para ter certeza que a configuração está correga, clique em Server runtime.

3.4 Selecione Web Service runtime como Axis2 (o default é Axis) e clique em Ok.

3.5 Clique em Next e certifique-se que selecionou a opção Generate a default service.xml file.

3.6 Clique em Next e em Start Server e depois que o servidor for startado você pode finalizar, se você não quizer publicar o Web service no teste de repositório UDDI.

Você pode ir ao link http://localhost:8888/MyFirstWebService/services/listServices para visualizar o seu serviço rodando que foi implantado pleo Axis2. Você pode visualizar o WSDL clicando no link FirstWebService.

A Porta utilizada na URL deve ser de acordo com a porta utilizada pelo seu TomCat !!!

Nós precisamos utilizar o Eclipse toda vez que nós quisermos rodar o serviço, se nós não criarmos o arquivo .aar (Axis Archive) e implantar dentro do servidor (Tomcat). Bom, vamos ver como podemos criar isso.

4. Criando o arquivo .aar (Axis Archive) e implantando o serviço

4.1 Vá ao seu workspace do Eclipse, na pasta MyFirstWebService e lá você pode encontrar seu Web service dentro da pasta de serviços. Vá até este diretório pelo prompt de comando e dê o seguinte comando. Ele vai criar o arquivo FirstWebService.aar lá.

jar cvf FirstWebService.aar com META-INF

4.2 Então copie o arquivo axis2.war, você pode encontralo dentro da pasta do Apache Axis2 (Que você fez o download no primeiro passo) para o diretório webapps do Apache Tomcat. Agora pare o  servidor Apache Tomcat que você está rodando na IDE Eclipse.

4.3 Utilizando o prompt de comando, starte o Apache Tomcat (Vá ao diretório bin e rode o arquivo startup.bat). Agora nós vamos ter um diretório chamado axis2 dentro do diretório webapps. Agora se você acessar o http://localhost:8080/axis2/ você poderá ver a página inicial da Aplicação Web do Axis2.

4.4 clique no link Administration e faça o login utilizando o usário: admin e a senha: axis2. Aqui você pode ver o link do serviço upado no topo esquerdo e lá você pode efetuar o upload do arquivo FirstWebService.aar que criamos.  Isto é igual copiar manualmente o arquivo FirstWebService.aar para o diretório webapps\axis2\WEB-INF\services.

4.5 Agora quando você listar os serviços pelo http://localhost:8080/axis2/services/listServices você deverá conseguir ver o nosso novo serviço adicionado.

5. Criando um cliente Web Service

5.1 Selecione File > New > Other… e escolha Web Service > Web Service Client

5.2 Insira o endereço (WSDL) do nosso serviço (http://localhost:8080/axis2/services/FirstWebService?wsdl) no campo Service definition. Então configure servidor como fizemos anteriormente e clique em finish.

5.3 Isso gerará duas novas classes chamadas FirstWebServiceStub.java e FirstWebServiceCallbackHandler.java. Agora nós podemos criar uma lcasse de teste para o cliente utilizar o nosso web service. Crie uma nova classe chamada TestClient.java e cole o seguinte código.

package com.sencide;
import java.rmi.RemoteException;
import com.sencide.FirstWebServiceStub.AddTwoNumbers;
import com.sencide.FirstWebServiceStub.AddTwoNumbersResponse;
public class TestClient {
 public static void main(String[] args) throws RemoteException {
  
  FirstWebServiceStub stub = new FirstWebServiceStub();
  AddTwoNumbers atn = new AddTwoNumbers();
  atn.setFirstNumber(5);
  atn.setSecondNumber(7);
  AddTwoNumbersResponse res = stub.addTwoNumbers(atn);
  System.out.println(res.get_return());
  
 }
}

Agora nós podemos rodar o código acima como java application e vamos ter a saída “12” desde que adicionarmos “7” e “5”.

Faça o download do projeto do Eclipse com o Exemplo acima clicando aqui!!! (Senha : sara)

Fonte: Sencide – Saranga Rathnayaka

Anúncios

About Gustavo Amaro

+ Formado em Tecnologia e Análise de Sistemas + MBA em Desenvolvimento de Aplicações JAVA – SOA

Posted on 19 de Dezembro de 2012, in Axis2, Integração, SOAP, Web Service, WSDL and tagged , , , , , , , , , , , , , , , , , . Bookmark the permalink. 13 comentários.

  1. Muito bom seu post, parabéns.

    Claro que para quem nunca viu Java e Eclipse ficou alguns pontos, mas excelente post !

    Inclusi aprendi com seu tutorial. Parabéns.

  2. Muito bom o seu tutorial, recomento a todos que buscam aprimorar seu conhecimento. Esse tutorial resolveu muita dificuldade que eu tinha.

  3. Muito bom o tutoriall Prático e objetivo.

  4. Oi Gustavo, eu não consegui gerar o FirstWebService.aar. A saída informa pra pasta com e WEB-INF o seguinte: Tal caminho ou diretorio não existe. Mas eu tenho essas pastas aqui sim, o que poderia ser?

    • isso no passo 4.1 certo? verifique se você entrou no diretório correto antes de executar o comando, se estiver em alguma pasta diferente ele não achará mesmo os diretórios 😉 qualquer coisa pode mandar outra msg…

  5. Oi Gustavo, me aparece o seguinte erro quando eu executo o comando do passo 4.1:

    com: não há tal arquivo ou diretório
    META-INF : não há tal arquivo ou diretório

    Eu tenho o seguinte caminho:

    C:\Users\Jose Inacio\Documents\workspace-sts-3.4.0.RELEASE\MyFirstWebService\WebContent\WEB-INF\services\FirstWebService

    e dentro desse caminho tenho as duas pastas, com e META-INF, no entanto, nenhuma das duas está sendo achada.

  6. Só pra constar, aqui a porta é 8080 e não 8888…

  7. Olá, parabéns pelo tutorial, funcionou 100%

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s

%d bloggers like this: