SISTEMAS DISTRIBUÍDOS Aula 1 Web Services em Java Material de suporte às aulas práticas de Sistemas Distribuídos Copyright DI – FCT/ UNL / 1 SUMÁRIO Web services Exemplo Exercício Material de suporte às aulas práticas de Sistemas Distribuídos Copyright DI – FCT/ UNL / 2 WEB SERVICES A Web service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format, specifically WSDL. Other systems interact with the Web service in a manner prescribed by its description using SOAP messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards Protocolo: HTTP e HTTPS (eventualmente SMTP) Referências: URL/URI Representação dos dados: XML Material de suporte às aulas práticas de Sistemas Distribuídos Copyright DI – FCT/ UNL / 3 WSDL – I NTERFACE D ESCRIPTION L ANGUAGE PARA WEB SERVICES Define a interface do serviço, indicando quais as operações disponíveis Define as mensagens trocadas na interacção (e.g. na invocação duma operação, quais as mensagens trocadas) Permite definir a forma de representação dos dados e a forma de aceder ao serviço Especificação WSDL bastante verbosa – pode ser criada automaticamente a partir de interface ou código do servidor Material de suporte às aulas práticas de Sistemas Distribuídos Copyright DI – FCT/ UNL / 4 WSDL – ABSTRACT MODEL Service Interface definition wsdl WebService Client SOAP XML Internet WWW wsdl SOAP XML WebService Provider bind / interact Material de suporte às aulas práticas de Sistemas Distribuídos Copyright DI – FCT/ UNL / 5 WEB SERVICES EM JAVA - SERVIDOR SERVIDOR: • Começa pela criação da interface e a sua implementação • Utilizam-se anotações para indicar: os métodos disponibilizados remotamente; a classe que implementa o serviço propriamente dito. • Instancia-se, criando um endpoint HTTP e fazendo a sua ligação (binding) à instância da classe principal. Material de suporte às aulas práticas de Sistemas Distribuídos Copyright DI – FCT/ UNL / 6 WEB SERVICES EM JAVA - CLIENTE CLIENTE: • Através do URL de uma instância do serviço, geram-se classes auxiliares (stubs) usando o comando wsimport • Os stubs gerados no passo anterior, permitirão ao cliente instanciar um “middleware” que expõe as operações do serviço localmente, acessíveis por invocação direta de métodos. • Havendo múltiplas instâncias do serviço, o cliente pode aceder a cada uma delas através do URL respetivo. Material de suporte às aulas práticas de Sistemas Distribuídos Copyright DI – FCT/ UNL / 7 WEB SERVICES EM JAVA – ASPETOS ADICIONAIS A passagem de parâmetros e o retorno dos métodos é feita por cópia dos valores (não há passagem de referências) O tipo dos parâmetros e do retorno pode sofrer alterações na tradução (e geração dos stubs). • Por exemplo, String[] -> List<String> Material de suporte às aulas práticas de Sistemas Distribuídos Copyright DI – FCT/ UNL / 8 EXEMPLO – SERVIDOR - Servidor - Geração dos stubs - Cliente DE FICHEIROS Material de suporte às aulas práticas de Sistemas Distribuídos Copyright DI – FCT/ UNL / 9 EXERCÍCIO– SERVIDOR DE FICHEIROS Aumente o webservice dados de modo a permitir listar o conteúdo de uma directoria do servidor Aumente o webservice dado de modo a permitir transferir o conteúdo de um ficheiro… QUIZ: e se o ficheiro for muito grande??? Material de suporte às aulas práticas de Sistemas Distribuídos Copyright DI – FCT/ UNL / 10