DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Easy Java Magazine
ou 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.





Easy Java Magazine 16

[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).

 Esta “mágica” na comunicação entre os Web Services e as aplicações cliente ocorre devido à padronização das formas de troca de mensagens com os serviços.

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.

"
A exibição deste artigo foi interrompida.

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Easy Java Magazine
ou 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 é...
O que você achou deste post?

    19 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Gustavo Lessa Meireles
Finalmente encontrei um tutorial que realmente me ajudou a construir um webservice funcional. Parabéns pela publicação e pelo vídeo anexado a esse artigo.
[há +1 ano] - Responder

 

Vera Cruz
Bom dia Luiz Carlos.

Ó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.
[há +1 ano] - Responder

 

Wesley Yamazack
Olá Vera, entramos em contato com o autor para que ele possa te auxiliar, tudo bem ? Peço que aguarde um pouco até que o mesmo possa retornar o contato.

Um abraço.
[há +1 ano] - Responder
 

[autor] Luiz Carlos Querino Filho
Gilberto,

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.
[há +1 ano] - Responder
 

Allisson Sistemas E Representacoees Com Ltda
Primeiramente parabéns pelo artigo sobre web services, todos exemplos que vejo o WebService é desenvolvido localmente, como que eu faço para publicar o exemplo criado pelo senhor no artigo em um servidor web, sendo assim gerando um wsdl com o numero de um ip de internet, e nao localhost...
[há +1 ano] - Responder

 

[autor] Luiz Carlos Querino Filho
Obrigado! Fico feliz que o artigo tenha ajudado.

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.
[há +1 ano] - Responder
 

Allisson Sistemas E Representacoees Com Ltda
Obrigado pelo retorno e os esclarecimentos consegui fazer com a versao do axis1, ai gerei um arquivo war e fiz o deploy no tomcat tbm funcionou...

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.
[há +1 ano] - Responder
 

[autor] Luiz Carlos Querino Filho
São os nomes das duas pastas que contém os arquivos necessários ao deployment do serviço.

Você precisar executar este comando pelo "Prompt de comando" do Windows.
[há +1 ano] - Responder
 

Allisson Sistemas E Representacoees Com Ltda
correto entendi obrigado!
Vou desenvolver um webservice conforme a necessidade da empresa. Caso tenha alguma duvida posso tirar duvidas com vc?
[há +1 ano] - Responder
 

Allisson Sistemas E Representacoees Com Ltda
Perfeito funcionou corretamente...Grato!
[há +1 ano] - Responder
 

Allisson Sistemas E Representacoees Com Ltda
Fiz um webservice nesse exemplo fiz o deploy, consumi a wsdl, porem meu servico em um método utiliza a classe XStream (um jar que adicionei ao projeto), só que ao executar o método do webservice na aplicação client exibe uma mensagem de erro "com/thoughtworks/xstream/XStream"

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?
[há +1 ano] - Responder
 

[autor] Luiz Carlos Querino Filho
Este é um caso muito específico, e infelizmente não vou poder ajudá-lo...Mas acredito que algum outro leitor poderá auxiliar em breve.

Grande abraço.
[há +1 ano] - Responder
 

Dyego Souza Do Carmo
Preciso do erro completo para identificar e proceder com uma solucao... Poderia colar aqui ?

Obrigado !
[há +1 ano] - Responder
 

Allisson Sistemas E Representacoees Com Ltda
Obrigado pela atenção mas consegui solucionar o problema...apenas gerei o jar novamente e fiz o deploy no servidor...dei stop no tomcat e start novamente...funcionou deve ser algum de um iniciante em java...obrigado!
[há +1 ano] - Responder
 

Wesley Yamazack
Legal Allisson, obrigado pelo comentário.

Um abraço.
[há +1 ano] - Responder
 

Hildebrando Demestres Pedroni
Olá.
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.
[há +1 ano] - Responder

 

Dyego Souza Do Carmo
Necessariamente vc quer usar j2me ? Ou poderia ser de outra forma ? Existem varias formas de faze-lo automaticamente , voce chegou a instlar o netbeans e pedir para ele fazer um webservices client ? Ele faz tudo para voce , ponta e de mostra.
[há +1 ano] - Responder
 

Evandro Bastos Viana
Olá estou gostando muito desse artigo sobre Web Service ideal para quem está começando como eu,mas tenho uma dúvida.
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
[há +1 mês] - Responder

 

Diogo Souza
Oi, ainda não mexi no Juno também, mas como de praxe o Eclipse sempre muda determinadas funcionalidades a cada versão..

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?
[há +1 mês] - Responder
 
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03