Universidade Federal de Juiz de Fora Ciência da Computação Sistemas Distribuídos Professor Ciro Barbosa Web Service Plínio Antunes Garcia Sam Ould Mohamed el Hacen Sumário • Introdução conceitual • O Web Service • Protocolo SOAP • Arquitetura • Tutorial • • • • Instalando um servidor (Apache Tomcat) Implementando um Web Service Criando um cliente (Java) Criando um cliente (PHP) O Web Service • Solução para comunicação entre aplicações via Internet • Permite a utilização de serviços independente da plataforma ou do sistema • Instituições responsáveis pela padronização: W3C e OASIS • Ex.: Comércio eletrônico Arquitetura • Protocolo SOAP (Simple Object Access Protocol) ▫ Controla a transmissão (via HTTP) dos dados entre as aplicações ▫ Detalha como a informação deve ser organizada ▫ Monta e transmite o WSDL • WSDL (Web Service Description Language) ▫ Documento em XML que descreve o serviço, como acessá-lo e quais métodos disponíveis Arquitetura (modelo cliente/servidor) • Tutorial • Objetivos: ▫ Instalar um servidor de web service ▫ Criar um Web Service simples em Java utilizando o protocolo SOAP (Simple Object Access Protocol) ▫ Implementar um cliente em Java e um cliente em PHP (Fonte: JavaFree.com.br) Instalando o servidor • Será utilizado o servidor Tomcat para executar um framework de Web Service chamado Axis • Axis: Framework da Apache que implementa o protocolo SOAP • 1) Baixe e instale o Tomcat (executável) http://tomcat.apache.org/ • 2) Baixe o Axis (.zip ou .tar) http://axis.apache.org/axis/ Instalando o servidor • 3) Descompacte a pasta do Axis e navegue até /webapps/axis • 4) Mova a pasta axis para a pasta webapps do tomcat ▫ Ex.: (C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\axis) • 5) Reinicie o Tomcat • 6) Faça o teste: http://localhost:8080/axis/ Instalando o servidor Criando um Web Service simples • 1) Crie uma classe Java com os métodos de seu serviço e salve com a extensão .jws na pasta axis Criando um Web Service simples • 2) Teste http://localhost:8080/axis/Servico.jws • O Axis cria de forma transparente os arquivos de definição WSDL (XML) • Teste de um serviço via URL http://localhost:8080/axis/Servico.jws?method =fatorial&n=4 Criando um cliente em JAVA • 1) A pasta lib do .zip Axis deve estar no classpath da aplicação pois utilizaremos as classes Service e Call do Axis Criando um cliente em JAVA • 2) Cliente.java import org.apache.axis.client.Service; import org.apache.axis.client.Call; public class Cliente { public static void main(String[] args) throws Exception { // Endereço, local onde encontra-se o Web Service String local = "http://localhost:8080/axis/Servico.jws"; // Criando e configurando o serviço Call call = (Call) new Service().createCall(); // Configurando o endereço. call.setTargetEndpointAddress(local); // Marcando o método a ser chamado. call.setOperationName("soma"); // Parâmetros da função soma. Object[] param = new Object[]{new Integer(25),new Integer(4)}; // Retorno da Função Integer ret = (Integer)call.invoke(param); // Imprime o resultado: System.out.println("Resultado da soma : " + ret); } } Criando um cliente em PHP 1) Antes de tudo, é preciso um servidor PHP para rodar o .php (exemplo: XAMPP e Vertrigo) • Classe soapclient.php http://php.net/manual/en/class.soapclient.php • No PHP 5 a classe já vem instalada Criando um cliente em PHP • 2) cliente.php _ <?php // Endereço, local onde encontra-se o Web Service $wsdl = "http://localhost:8080/axis/Servico.jws?wsdl"; $valor1 = 5; $valor2 = 234; // Instanciando um objeto soapclient $cliente = new soapclient($wsdl); print "<p>Resultado da soma $valor1 + $valor2: "; $ret = $cliente->__call('soma',array($valor1, $valor2)); print $ret; print "</p>"; ?> Conclusão • Mostramos a finalidade essencial de um Web Service: promover o acesso à serviços via web independente da plataforma dos clientes. Referências • COLPANI, C. F., VALDAMERI, A. F., Web Services: estudo de caso envolvendo uma aplicação B2B, FURB, 2003. < http://www.inf.furb.br/seminco/2003/artigos/94-vf.pdf> • W3C WORLD WIDE WEB CONSORTIUM. Simple object access protocol (SOAP). Estados Unidos, maio 2000b. Disponível em <http://www.w3.org/XML>. Questões sobre WS Para que serve o WSDL no uso de Web-Services? WSDL é uma linguagem, baseada em XML, que descreve um Web-Service especificando como acessá-lo e quais métodos compõe o serviço. Qual o papel do SOAP no contexto de aplicações WebService? O protocolo SOAP (Simple Object Access Protocol)em WebServices tem o papel de controlar a transmissão (via HTTP) dos dados entre as aplicações envolvidas. SOAP também é responsável por detalhar como a informação deve ser organizada além de montar e transmitir o WSDL do serviço. Qual o ciclo de vida de um Web-Service? O ciclo de vida de um Web-Service compreende quatro estados distintos: Publicação, Descoberta, Descrição e Invocação. Publicação: Processo, opcional, através do qual o fornecedor do Web Service possa conhecer a existência do seu serviço, efetuando o registro do mesmo no repositório de Web Services (UDDI); Descoberta: Processo, opcional, através do qual uma aplicação cliente toma conhecimento da existência do Web Service pretendido pesquisando num repositório UDDI; Descrição: Processo pelo qual o Web Service expõem a sua API (documento WSDL); desta maneira a aplicação cliente tem acesso a toda a interface do Web Service, onde se encontram descritas todas as funcionalidades por ele disponibilizadas, assim como os tipos de mensagens que permitem processar as rotinas; Invocação: Processo pelo qual cliente e servidor interagem, através do envio de mensagens de entrada e de eventual recepção de mensagem de saída do Web Service. Referência: CAMPOS, M. C., Interoperabilidade Entre Sistemas Distribuídos Utilizando Web Services, UNIRONDON