Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Web Services em Java - Revista easy Java Magazine 16
O artigo apresenta os conceitos fundamentais de Web Services e aborda seu desenvolvimento em Java por meio do framework Apache Axis2.
[Artigo disponível no Leitor Digital DevMedia. Clique aqui para acessá-lo]
> Clique aqui para ler todos os artigos da Easy Java Magazine 16
Uma das grandes facilidades que a Internet trouxe é o acesso aos mais diversos tipos de serviços. A lista de opções é imensa: previsão do tempo, indicadores financeiros, dicionários, tradutores de texto, entre outros. Órgãos do governo passaram a disponibilizar na web acesso a diversas funcionalidades que, anteriormente, eram acessíveis apenas por meio de muita burocracia e filas intermináveis. Empresas também puderam se beneficiar do recurso, disponibilizando seus produtos e fazendo a comunicação entre seus clientes, funcionários e parceiros de negócio.
Para a grande maioria das pessoas, estes serviços estão diretamente ligados a uma página web, e todo acesso a estes é feito por meio dela. Com o advento destas funcionalidades, tornou-se uma consequência natural que estes serviços pudessem ser disponibilizados e acessados não somente por um usuário dentro do seu navegador, mas também por outros aplicativos.
Estes serviços passaram então a ser criados de modo que outros aplicativos (seja ele um outro site, um aplicativo móvel, desktop, etc.), pudessem utilizá-los “nos bastidores”, para realizar alguma tarefa específica. Foi o surgimento do conceito dos “Web Services” – literalmente, “Serviços da Web”.
Como funcionam os Web Services
Um Web Service poderia ser definido como um recurso de software destinado a ser utilizado entre diferentes sistemas dentro de uma rede. Um sistema X, precisando de algum recurso que não possui, e conhecendo um sistema Y que possui esta funcionalidade, faz uma chamada a este último solicitando um recurso e obtendo o resultado. Se esta situação fosse colocada entre sistemas residindo em um mesmo computador, em uma única plataforma, não haveria nenhuma novidade.
No caso dos Web Services, estes sistemas geralmente estão localizados em computadores distintos, e se comunicam por meio de uma conexão à Internet. Indo mais além, estes sistemas podem estar executando em plataformas completamente distintas, tendo sido programados em linguagens completamente diferentes.
Uma empresa pode ter um sistema financeiro desenvolvido em Java que, precisando obter a cotação do Dólar em relação ao Real, chama um Web Service que retorna o devido valor, e este é utilizado na impressão de um relatório, por exemplo. Graças aos padrões usados na comunicação com o Web Service, a aplicação cliente não precisa se preocupar com detalhes como o sistema operacional ou a linguagem usada pelo serviço – ela apenas deverá saber como localizar o Web Service, que dados deverá enviar para sua solicitação e como interpretar a resposta recebida (Figura 1).
A WSDL (Web Service Description Language, em português “Linguagem de Descrição de Web Service”) é utilizada para a especificação da interface de um Web Service, ou seja, quais são as operações disponibilizadas por este serviço e de como estas devem ser invocadas. O protocolo SOAP (Simple Object Access Protocol) define a estrutura das mensagens trocadas entre o cliente e o Web Service. Estas mensagens são geralmente enviadas em documentos no formato XML, usando o protocolo HTTP.
REST (ou RESTful) Web Services pertencem a uma outra categoria de serviços que, apesar de servirem ao mesmo propósito dos baseados em WSDL e SOAP, surgiram, a grosso modo, com o intuito de simplificar o acesso aos Web Services, utilizando para isso operações padronizadas do protocolo HTTP. Como este artigo é de conteúdo introdutório, será abordada apenas a criação de Web Services baseados em SOAP e WSDL.
Existem diversos frameworks para implementação de Web Services em Java. Um dos mais utilizados é o Apache Axis2, que será usado no exemplo prático demonstrado neste artigo.
Criando um Web Service com o Apache Axis2
O desenvolvimento de Web Services com o Axis2 é extremamente facilitado com o uso do seu plug-in disponível para o Eclipse. O primeiro passo para a criação do Web Service é, obviamente, ter o Eclipse instalado no computador. Os procedimentos e telas incluídos neste artigo foram baseados no Eclipse Indigo.
Se o leitor ainda não possui o Eclipse instalado, acesse www.eclipse.org/downloads/ e baixe a versão “Eclipse IDE for Java EE Developers”. Esta versão já possui os plug-ins necessários para a criação de um Web Service usando Axis2.
"
Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Luiz Carlos Querino Filho
Luiz Carlos Querino Filho (querino@me.com) possui graduação e mestrado em Ciência da Computação. É Professor Associado e Pesquisador da Fatec, no curso de Análise e Desenvolvimento de Sistemas da unidade de Garça,SP. Desenvolve aplicações web há mais de dez anos, utilizando Java, PHP e ASP. Também é...
19 COMENTÁRIOS
Ótimo tutorial. Simples e muito objetivo.
Tentei substituir o método por um que retornasse uma string (populada através de uma consulta no banco de dados). Mas sempre que faço isso dá erro.
O código de consulta ao Banco está correto pois testei fora da classe do webservice.
Tenho que fazer alguma configuração diferente nesse caso ?
Muito obrigado.
Gilberto.
Um abraço.
Você pode retornar uma String sim, sem problemas.
Tente criar um novo projeto no Eclipse, colar o código da classe Java referente ao método que retorna a String e fazer a criação do serviço novamente, como exemplificado no artigo.
Depois, crie uma aplicação cliente (você pode usar o exemplo do artigo como base) que invoque o método do serviço e veja o resultado.
Caso o erro se repita, coloque-o aqui, junto do trecho de código referenciado por ele.
Para fazer o deployment do serviço, inicialmente você precisa ter o Axis2 no seu servidor Tomcat de produção.
Entre no site do Axis2 e baixe a "War Distribution" da versão que você utilizou para criar o serviço. Descompacte e copie o arquivo "axis2.war" para a pasta "webapps" do Tomcat.
Inicie o Tomcat e abra o navegador em http://endereco:porta/axis2 para testar se o Axis2 está funcionando corretamente.
Em seguida, você deve gerar um JAR, com a extensão .aar, contendo:
- O arquivo .class do serviço
- O arquivo services.xml, dentro de uma pasta denominada ./META-INF
Dentro do projeto, você encontra estes arquivos na pasta WebContent/WEB-INF/services/Nome-Do-Serviço.
No caso do serviço criado no artigo, os arquivos estão em WebContent/WEB-INF/services/Conversor. Você pode simplesmente entrar nesta pasta e excutar o comando:
jar cf Conversor.aar META-INF webservices
Copie "Conversor.aar" para a pasta webapps/axis2/WEB-INF/services do Tomcat. Pronto! O serviço já estará disponível em seguida.
porem fiz esse exemplo tbm e deu certo porem me esbarrei nessa parte abaixo...
{Em seguida, você deve gerar um JAR, com a extensão .aar, contendo:
- O arquivo .class do serviço
- O arquivo services.xml, dentro de uma pasta denominada ./META-INF
Dentro do projeto, você encontra estes arquivos na pasta WebContent/WEB-INF/services/Nome-Do-Serviço.
No caso do serviço criado no artigo, os arquivos estão em WebContent/WEB-INF/services/Conversor. Você pode simplesmente entrar nesta pasta e excutar o comando:
jar cf Conversor.aar META-INF webservices}
Não entendi mtu bem essa parte até consegui gerar o arquivo .aar porem nao entendi mtu bem essa quetao META-INF webservices? Poderia explicar grato.
Você precisar executar este comando pelo "Prompt de comando" do Windows.
Vou desenvolver um webservice conforme a necessidade da empresa. Caso tenha alguma duvida posso tirar duvidas com vc?
por dedução coloquei os arquivos jar na pasta lib \Apache Software Foundation\Tomcat 7.0\webapps\axis2\WEB-INF\lib\
e ao gerar o arquivo .aar tambem por precaução adicionei a pasta lib que continha os arquivos jar e adicionei ao meu projeto.
porem esta exibindo essa mensagem de erro alguem poderia ajudar?
Grande abraço.
Obrigado !
Um abraço.
Desenvolvi o WebService e tudo ocorreu bem.
Porem gostaria de fazer um teste utilizando um consumidor de fora do projeto, que acessasse via a URL e não criando uma instancia do stub (ConversorStub stub = new ConversorStub();)
Tentei fazer um exemplo em j2me que conectasse a esse webService usado o ksoap2, porem não estou obtendo nenhum sucesso.
Alguém teria um exemplo de aplicação (externa) que consuma esse webservice?
Obrigado.
Estou utilizando o Eclipse Juno e fiz passo a passo mas na hora de colar o endereço do WSDL no WebService Client o eclipse diz que é inválido...outro detalhe é também no momento que clico em Conversor no WebService, não aparece "Please Type your service description here " e sim o xml...
Alguem sabe de alguma coisa sobre isso?
Obrigado
Sobre o wsdl, tenta colocar a URL com um ponto ao invés da interrogação...
Sobre a não exibição da interface... Geralmente abaixo do arquivo você encontra a opção visual e o código? É isso que está em dúvida?



