Escolar Documentos
Profissional Documentos
Cultura Documentos
BATE-PAPO
SAC
BUSCAR
VOIP
E-MAIL GRTIS
SHOPPING
NDICE PRINCIPAL
Login
>
Registre-se
HOME
NOTCIAS
ARTIGOS
FRUM
WIKI
BUSCA
SOBRE
ENVIAR NOTCIA
CONTRIBUIR
O QUE JAVA?
Web Services. Construindo, disponibilizando e acessando Web Services via J2SE e J2ME.
Publicado por Tutoriais Admin em 05/07/2010 - 547.217 visualizaes
comentrios: 1 Vitor Fernando Pamplona Nos ltimos anos o termo " Web Service " tem chamado a ateno de muitos analistas e arquitetos, principalmente dos mais fnticos por business-to-business (B2B). O conceito foi criado, implementado e agora est comeando a ser utilizado. As espectativas so grandes, altos investimentos, frameworks poderosos, ganhos em produtividade, portabilidade e em independncia. Neste artigo, ser apresentado um pouco desta grande tecnologia que prometeu e, j est cumprindo, revolucionar o modo como os sitemas so desenvolvidos.
Figura1: Retirada do Artigo Developing JAX-RPC Based Web Services Using Axis and SOAP Um Web Service ser publicado, e para que outras pessoas possam utiliz-lo necessrio definir como ele , como deve ser acessado, e que valores ele retornar. Estas definies so descritas em um arquivo XML de acordo com a padronizao Web Service Description Language (WSDL). Este arquivo deve ser construdo para que os usurios do servio possam entender o funcionamento do Web Service e, logicamente, ser de acesso pblico. Os Web Services tambm podem ser utilizados para implementar arquiteturas orientadas a servios, as Service-Oriented Architectures (SOA). Neste modelo de arquitetura os principais requisitos viram servios e so acessados por outros servios, modularizando e aumentando a coeso dos componentes da aplicao.
O que ser implementado neste artigo um Web Service simples, para aprendizado da tecnologia e para desmentir a afirmao que Web Services so complexos de construir e complexos para utilizar.
Figura 2 Nesta mesma pgina de apresentao, existiro dois links importantes: um link para validar a instalao: clicando nele ser apresentado uma lista de componenetes necessrios (" Needed Components "). Caso algum desses no for encontrado ele ir solicitar a instalao. Com as verses trabalhadas neste artigo, o Tomcat e o Axis estaro completos portanto a validao OK; um link para visualizar os Web Services j instalados: clicando nele, existiro dois Web Services e clicando no link (wsdl) voc ver o arquivo de especificao de ambos. Se, ao clicar, no aparecer nenhuma informao, no se preocupe, alguns navegadores no exibem XML, outros exibem como HTML, sendo necessrio abrir o fonte da pgina para ver o cdigo. Mas ele estar l e funcionando.
Agora s falta disponibiliz-lo no nosso servidor para o mundo acessar. E, para fazer isso, deve-se alterar o nome do arquivo de Servico.java para Servico.jws, coloca-lo no diretrio: CATALINA_HOME / webapps / axis / e iniciar o servidor, se ele j no estiver iniciado. Se j estiver iniciado, o seu Web Service est publicado. Os arquivos. jws so lidos pelo Axis e representam Java Web Services. O Axis se basear nesses arquivos (. jws) para criar os arquivos de definio WSDL. Todos os mtodos pblicos existentes nessas classes sero automaticamente disponibilizados para terceiros. Criar documentos XML demorado e, muitas vezes, chato. Gerar o WSDL uma caracterstica muito relevante na escolha de uma implementao de SOAP e o Axis um dos poucos frameworks que conseguem fazer essa faanha de maneira transparente para o desenvolvedor. por esse motivo que ele altamente recomendado na construo de Web Services. Para acessar o Web Service criado basta abrir um navegador e ir ao endereo: http://localhost:8080/axis/Servico.jws . Da mesma forma que os outros dois Web Services foram vistos, este tambm ter um link para ver a especificao WSDL, e novamente poder ser visto ou no dependendo do seu navegador. O arquivo WSDL da classe Servico ficar como abaixo:
<?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions targetNamespace="http://localhost:8080/axis/Servico.jws" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://localhost:8080/axis/Servico.jws" xmlns:intf="http://localhost:8080/axis/Servico.jws" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <wsdl:message name="somaRequest"> <wsdl:part name="valor1" type="xsd:int"/> <wsdl:part name="valor2" type="xsd:int"/> </wsdl:message> <wsdl:message name="somaResponse"> <wsdl:part name="somaReturn" type="xsd:int"/> </wsdl:message> <wsdl:portType name="Servico"> <wsdl:operation name="soma" parameterOrder="valor1 valor2"> <wsdl:input message="impl:somaRequest" name="somaRequest"/> <wsdl:output message="impl:somaResponse" name="somaResponse"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="ServicoSoapBinding" type="impl:Servico"> <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="soma"> <wsdlsoap:operation soapAction=""/> <wsdl:input name="somaRequest"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://DefaultNamespace" use="encoded"/> </wsdl:input> <wsdl:output name="somaResponse"> <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://localhost:8080/axis/Servico.jws" use="encoded"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="ServicoService"> <wsdl:port binding="impl:ServicoSoapBinding" name="Servico"> <wsdlsoap:address location="http://localhost:8080/axis/Servico.jws"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
Analisar este arquivo essencial para entender a profundidade da implementao. Uma das linhas mais importantes para este arquivo a linha 19, onde define-se o nome do mtodo e o nome de seus parmetros. Eles devero ser de conhecimento pblico para que as interfaces cliente consigam se comunicar com o Web Service.
. Novamente, dependendo do browser no ser visivel as tags XML. O XML que retornou na
02 <soapenv:Envelope 03 xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 04 xmlns:xsd="http://www.w3.org/2001/XMLSchema" 05 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 06 <soapenv:Body> 07 <somaResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 08 <somaReturn xsi:type="xsd:int">6</somaReturn> 09 10 </somaResponse> 11 </soapenv:Body> 12 </soapenv:Envelope>
Este cdigo est dentro de um arquivo chamado Cliente.java, aps compilar e executar esta classe exibir o resultado " Resultado da soma: 6 " como desejado. O framework do Axis trata a primitiva int e a classe wrapper Integer como sendo iguais. Portanto, tanto faz usar uma ou outra. Neste exemplo, foi criado o Web Service com dois parmetros int e aqui no cliente estamos usando dois parmetros Integer . Como pode-se notar, o framework do Axis abstrai qualquer trabalho com XML, evitando que o desenvovedor necessite conhecer a sintaxe do XML do SOAP.
SeuProjetoJ2ME * org o kxml o - - Todas as suas pastas e arquivos internos a esta pasta que esto no zip. kobjects o - - Todas as suas pastas e arquivos internos a esta pasta que esto no zip. ksoap + transport - - Necessrio excluir o pacote marshal.
No sero utilizados as pastas referentes a servlets e a j2se do ksoap. Somente referente a J2ME e ao fonte bsico. No diretrio SeuProjetoJ2ME, deve ser criado a classe ClienteJ2ME.java conforme abaixo:
import javax.microedition.lcdui.Display; import javax.microedition.lcdui.TextBox; import org.ksoap.SoapObject; import org.ksoap.transport.HttpTransport; public class ClienteJ2ME extends javax.microedition.midlet.MIDlet { private Display display; private String url = "http://localhost:8080/axis/Servico.jws"; TextBox textbox = null; public void startApp() { display = Display.getDisplay(this); try { testWebService(); } catch (Exception ex) { System.out.println(ex); } } public void pauseApp() {} public void destroyApp(boolean unconditional) {} public void testWebService() throws Exception { StringBuffer stringBuffer = new StringBuffer(); TextBox textBox = null; // Chama o WebService SoapObject client = new SoapObject(url,"soma"); client.addProperty("valor1",new Integer(2)); client.addProperty("valor2",new Integer(4)); HttpTransport ht = new HttpTransport(url,"soma"); stringBuffer.append(" Resultado: " + ht.call(client)); // mostra o valor do resultado na tela. textBox = new TextBox("Teste WebService", stringBuffer.toString(), 1024, 0); display.setCurrent(textBox);
Pronto! Aplicao construda. Essas poucas linhas de cdigo iro gerar os mesmos documentos XML de envio e recepo que o cliente Desktop produziu. Esse exemplo um MIDlet para MIDP2 e deve ser executada com o Java Wireless Toolkit. Abaixo segue os passos para compilar e executar a aplicao no Java Wireless Toolkit. * * * * * Abrir o JWT e criar um novo projeto Configure as opes do projeto para utilizar MIDP2.0 e CLDC1.1 Configure o nome do MIDlet para ClienteJ2ME Copiar este ltimo arquivo e os fontes que voc separou do KSOAP e do KXML para a pasta src do projeto. Compilar e Executar (O servidor Tomcat deve estar inicializado).
Em J2ME as aplicaes clientes de Web Services so mais difceis de serem desenvolvidas, pois requerem mais conhecimento que os clientes Desktop. Mas, pela simplicidade dos dispositivos e o valor agregado, essa implementao, em alguns casos, ainda vivel. O que deve ser analizado o custo da conexo em produo. Conexes com a internet via celulares normalmente so pagos por kilobyte trafegado nas redes das operadoras. O valor caro, e como os arquivos XMLs so grandes, o custo de fazer a comunicao com Web Service pode no ser a melhor sada. Analise antes de qualquer escolha. Leia tambm WebService WSDL e RESTful com Java e Apache CXF Quer aprender mais sobre Java? O que Java? Caractersticas Bsicas Orientao a Objetos
Tutoriais para Certificao Java Fundamentos da Linguagem Modificadores Operadores e atribuies Controle de Fluxo Orientao a Objetos Java Lang e Wrappers Objetos e Conjuntos Classes Internas Threads (Segmentos)
comentrios: 1
Tpicos Relacionados
s uma duvida Get Remote Properties Dicas e Livro sobre J2ME Assunto pra Monografia Idias para TCC WebServices ???? [AXIS] Web Service - Session IDE para Web Service... e Aplicacoes JAX RPC comunicao entre sistemas WEB atravs de XML j2me - nokia Problema com ksoap2 Certificao SOAP ou JMS Detalhes da SCJA Beta! WebService WSDL e RESTful com Java e Apache CXF
Home
Sobre
Anuncie
Hospedado em oxxus.net
O JavaFree.org uma comunidade java formada pela coolaborao dos desenvolvedores da tecnologia java. A publicao de artigos alm de ajudar a comunidade java, ajuda a dar maior visibilidade para o autor. Contribua conosco. JavaFree um site do Grupo DevMedia www.devmedia.com.br | www.javafree.org | www.mrbool.com |