Aula 25: Web Services (III)

Tamanho: px
Começar a partir da página:

Download "Aula 25: Web Services (III)"

Transcrição

1 Aula 25: Web Services (III) Diego Passos Universidade Federal Fluminense Técnicas de Projeto e Implementação de Sistemas II Diego Passos (UFF) Web Services (III) TEPIS II 1 / 39

2 Última Aula A API JAX-WS. Como escrever Big Web Services. Montagem e disponibilizaçao. Geração dos artefatos. Como escrever um cliente. Mapeamento de tipos de dados. Diego Passos (UFF) Web Services (III) TEPIS II 2 / 39

3 Aula de Hoje RESTful Web Services: Visão geral. A API JAX-RS. Como escrever RESTful Web Services. Tipos de anotações utilizadas. Provedores de Entidades. Recebendo parâmetros. Informações contextuais. Diego Passos (UFF) Web Services (III) TEPIS II 3 / 39

4 RESTful Web Services: Visão Geral Até agora, discutimos um tipo específico de Web Services: os Big Web Services. Padrão do W3C. Baseado em SOAP, XML. Relativamente complexos. Uma alternativa em voga atualmente são os RESTful Web Services. Baseados no padrão arquitetural REST (Representational State Transfer). Abstração da arquitetura da Web. O padrão REST determina uma série de restrições na iteração entre os componentes do sistema. Diego Passos (UFF) Web Services (III) TEPIS II 4 / 39

5 RESTful Web Services: Visão Geral (II) Exemplos de restrições impostas pelo padrão REST: Modelo cliente-servidor. Comunicação stateless. Respostas podem ser cacheadas. Interface uniformizada dos serviços. Uso de URIs (identificam funcionalidades e recursos). Mensagens auto-descritivas (contém toda a informação necessária para entendê-las; não sendo necessário estado). Estado do sistema só muda através da interação do cliente com hypermidia. Diego Passos (UFF) Web Services (III) TEPIS II 5 / 39

6 RESTful Web Services: Visão Geral (III) Em termos práticos, a diferença entre Big Web Services e RESTful Web Services está na padronização. Os Big Web Services são padronizados e por isso demandam a geração de inúmeros artefatos. Como o arquivo WSDL, por exemplo. O conceito de RESTful Web Service é bem mais flexível. Qualquer serviço ofertado pela Web que esteja de acordo com as restrições arquiteturais REST. Esta liberdade faz com que seja mais fácil desenvolver um Web Service do tipo REST. Por outro lado, é difícil elaborar uma API genérica, especialmente do lado do cliente. Diego Passos (UFF) Web Services (III) TEPIS II 6 / 39

7 RESTful Web Services: JAX-RS O J2EE inclui uma API para auxiliar na criação de RESTful Web Services. JAX-RS. Análoga à JAX-WS. Utiliza bastante o conceito de anotações. Desenvolvedor anota classes e métodos definindo recursos e ações que podem ser executadas. As anotações do JAX-WS são de tempo de execução. São interpretadas por um servidor de aplicação para gerar as classes auxiliares necessárias para implantar o Web Service. Diego Passos (UFF) Web Services (III) TEPIS II 7 / 39

8 JAX-RS: Anotações Há um grande número de anotações na API. Alguns Identifica a URL para a qual a classe será mapeada. O atributo especificado para esta anotação será usado como o sufixo da URI. Considerando o endereço base do Um método anotado com esta anotação processará requisições HTTP do tipo GET. Há anotações para outros Diego Passos (UFF) Web Services (III) TEPIS II 8 / 39

9 JAX-RS: Anotações Define o tipo MIME da resposta gerada pelo serviço. e.g., plain/text, Define o tipo MIME da entrada provida pelo cliente. e.g., plain/text, application/json. Diego Passos (UFF) Web Services (III) TEPIS II 9 / 39

10 JAX-RS: Exemplo de Código import javax.ws.rs.get; import javax.ws.rs.produces; import javax.ws.rs.path; // The Java class will be hosted at the URI path public class HelloWorldResource { // The Java method will process HTTP GET // The Java method will produce content identified by the MIME Media // type public String getclichedmessage() { // Return some cliched textual content return "Hello World"; Web Service servido na URL (relativa) /helloworld. Requisições HTTP do tipo GET resultam em chamadas ao método getclinchedmessage(). Saída gerada para o cliente é do tipo text/plain. Diego Passos (UFF) Web Services (III) TEPIS II 10 / 39

11 JAX-RS: Exemplo de Código (II) E se precisarmos receber conteúdo public void postclichedmessage(string message) { // Store the message Conteúdo da requisição do usuário é passado como parâmetro (String) do método. Diego Passos (UFF) Web Services (III) TEPIS II 11 / 39

12 JAX-RS: A e Templates Vimos um uso bastante simplificado da Ela recebia como atributo uma String especificando uma URL estática (/helloworld). Esta anotação, no entanto, é bem mais poderosa. Ela permite que especifiquemos templates. Estes templates podem ser usados, por exemplo, para usarmos parte de uma URL como uma variável/parâmetro. Diego Passos (UFF) Web Services (III) TEPIS II 12 / 39

13 JAX-RS: A e Templates (II) Considere o seguinte exemplo: Queremos criar um Web Service para consultar informações sobre usuários de um sistema. O Web Service será mapeado para a URL /users/. O cliente deve especificar o nome do usuário (do qual quer obter informações). Uma opção seria colocar o nome do usuário no corpo da requisição. Ao invés disso, podemos usar uma solução baseada em public class public String getuser(@pathparam("username") String username) {... A sintaxe {username cria uma variável username. Se o cliente acessa a URL /users/diego esta variável terá o valor diego. Esta variável pode ser acessada pelos métodos. Diego Passos (UFF) Web Services (III) TEPIS II 13 / 39

14 JAX-RS: A e Templates (III) É possível ainda especificar o formato das variáveis através de expressões regulares. Suponha no exemplo anterior que nomes de usuário só podem ser compostos por letras e números. Podemos restringir isso com a seguinte [a-za-z][a-za-z0-9]*") public class public String getuser(@pathparam("username") String username) {... Se tentamos acessar a URL /users/diego3, o acesso é bem sucedido. Se tentamos acessar a URL /users/diego_passos, recebemos um erro 404. Diego Passos (UFF) Web Services (III) TEPIS II 14 / 39

15 JAX-RS: A e Templates (IV) Também podemos definir um template com mais de uma variável. Exemplo: queremos nome e sobrenome do public class public String getuser(@pathparam("nome") String String sobrenome) { return "Nome completo: " nome + " " + sobrenome; Diego Passos (UFF) Web Services (III) TEPIS II 15 / 39

16 JAX-RS: A e Templates (V) Algumas outras observações: Uma mesma variável pode ser especificada múltiplas vezes em uma Neste caso, só serão aceitas requisições a URLs cujos dois últimos componentes sejam iguais. Variáveis podem ser vazias. Cliente acessa URL /users//home. Variável nome ganha o valor (String vazia). Note ainda que a pode ser usada para métodos específicos. Aquele método será mapeado para aquela URL. Diego Passos (UFF) Web Services (III) TEPIS II 16 / 39

17 JAX-RS: Anotações Designadoras de Métodos de Requisição São anotações utilizadas para associar um método HTTP a um método da classe. Vimos exemplos de uso de São também incluir um remover um informações sobre um recurso. Os métodos HTTP HEAD e OPTIONS são suportados por padrão, mesmo se não implementados explicitamente. Implementação padrão do HEAD retorna o mesmo que a implementação do GET, sem o conteúdo. Diego Passos (UFF) Web Services (III) TEPIS II 17 / 39

18 JAX-RS: Anotações Designadoras de Métodos de Requisição (II) A implementação do OPTIONS é mais interessante. Ela retorna (como esperado) o conjunto de requisições que são suportadas. Mas também retorna um documento WADL: <?xml version="1.0" encoding="utf-8" standalone="yes"?> <application xmlns=" <doc xmlns:jersey=" jersey:generatedby="jersey: :09:00"/> <grammars/> <resources base=" <resource path="basicpost"> <method id="postclinchedmessage" name="post"> <request> <representation mediatype="text/plain"/> </request> <response> <representation mediatype="text/plain"/> </response> </method> </resource> </resources> </application> Diego Passos (UFF) Web Services (III) TEPIS II 18 / 39

19 JAX-RS: Anotações Designadoras de Métodos de Requisição (III) O WALD é um formato de documento utilizado para descrever aplicações Web em geral. Hoje, o exemplo mais comum de uso é com os RESTful Web Services. Provê informação sobre as operações oferecidas. Parâmetros esperados. Formato da entrada. Formato da resposta. É o equivalente para RESTful Web Services do WSDL para Big Web Services. Diego Passos (UFF) Web Services (III) TEPIS II 19 / 39

20 JAX-RS: Anotações Designadoras de Métodos de Requisição (IV) Não há uma assinatura definida para os métodos de requisição. Eles podem receber inúmeros parâmetros (e.g., extraídos do template da Eles podem ter vários tipos de retorno diferentes. Mas há algumas restrições: O tipo de retorno deve ser void, um tipo básico de Java, ou um javax.ws.rs.core.response. Este último provê uma maneira de manipular metadados da resposta. Diego Passos (UFF) Web Services (III) TEPIS II 20 / 39

21 JAX-RS: Incluindo Metadados nas Respostas Isso é feito com as classes Response e ResponseBuilder. Exemplo de funcionalidades: Definição de cookies. Definição de headers. Definição de código de status. Definição do media type. Exemplo de public class public Response getuser(@pathparam("nome") String { return Response.status(404).entity("User not found").build(); Diego Passos (UFF) Web Services (III) TEPIS II 21 / 39

22 JAX-RS: Provedores de Entidades Suponha que desejemos escrever um Web Service que adiciona um usuário a uma base de dados. Usuários têm as seguintes propriedades: Nome completo. Apelido. Data de nascimento. CPF. Senha. Temos uma classe User com esta representação. O Web Service recebe estes dados no corpo de uma requisição POST. Como obter, a partir da requisição, um objeto do tipo User? Diego Passos (UFF) Web Services (III) TEPIS II 22 / 39

23 JAX-RS: Provedores de Entidades (II) Primeira abordagem: receber o corpo da requisição como texto e fazer o parse. @Produces("text/plain") public String postclichedmessage(string message) { User u = new User(); // Parse da mensagem e preenchimento do objeto.... // Adição do usuário à base.... // Envio da resposta ao usuário.... Há muita coisa sendo feita neste método. Note também que a assinatura do método é enganosa: Implicitamente, o método espera que o corpo da mensagem seja um User. Ou melhor, sua representação em texto. Diego Passos (UFF) Web Services (III) TEPIS II 23 / 39

24 JAX-RS: Provedores de Entidades (III) Podemos implementar isso de outra forma: usando um provedor de entidade. Exemplo public class UserUnmarshaller implements MessageBodyReader public boolean isreadable(class aclass, Type type, Annotation[] annotations, MediaType mediatype) { return public Object readfrom(class aclass, Type type, Annotation[] annotations, MediaType mediatype, MultivaluedMap multivaluedmap, InputStream inputstream) throws IOException, WebApplicationException { User result = null; try { // Parse da mensagem (lida do inputstream). // Resultado deve ser colocado no objeto result. //... catch (Exception e) { e.printstacktrace(); return result; Diego Passos (UFF) Web Services (III) TEPIS II 24 / 39

25 JAX-RS: Provedores de Entidades (IV) A classe do slide anterior implementa um decodificador para o tipo de mídia text/user. Fictício, criado para este exemplo. Tendo a classe UserUnmarshaller carregada, podemos usar este tipo de mídia para tornar transparente o parse @Produces("text/plain") public String postclichedmessage(user u) { // Já recebemos automaticamente uma instância de User preenchida com os dados da requisição. // Basta fazer a inserção no banco.... // Envio da resposta ao usuário.... Diego Passos (UFF) Web Services (III) TEPIS II 25 / 39

26 JAX-RS: Provedores de Entidades (V) Podemos fazer também o processo inverso. Na resposta, enviamos um User. Ou melhor, sua representação textual. Novamente, ao invés de fazer o próprio método, escrevemos um provedor de entidade. Neste caso, no entanto, como se trata de uma resposta, o provedor precisa fazer a operação contrária. Este provedor deve implementar a interface MessageBodyWriter. Diego Passos (UFF) Web Services (III) TEPIS II 26 / 39

27 JAX-RS: Provedores de Entidades (VI) Para tipos mais comuns, a JAX-RS já provê provedores de entidades padrão. Estes provedores mapeiam tipos comuns do Java a tipos de mídia comuns. Por exemplo: byte[] */*. String text/*. File */*. MultivaluedMap<String,String> application/x-www-form-urlencoded. Para usá-los, basta definir o método com os tipos de parâmetro/retorno adequados aos tipos de mídia. Diego Passos (UFF) Web Services (III) TEPIS II 27 / 39

28 JAX-RS: Como visto nos exemplos anteriores, esta anotação declara o tipo de conteúdo que é produzido por um dado método. A anotação também pode ser usada na declaração da classe. Neste caso, todos os métodos podem produzir o tipo especificado de conteúdo. Se um método específico declara a anotação, esta se sobrepõe à anotação da classe. Note que a anotação define os tipos de dados que podem ser gerados pelos métodos. Por isso, a anotação pode conter mais de um tipo. Diego Passos (UFF) Web Services (III) TEPIS II 28 / 39

29 JAX-RS: Quando um cliente envia uma requisição, ele pode especificar um conjunto de formatos aceitáveis. Neste caso, o JAX-RS procura entre todos os métodos que atendem àquele tipo de requisição o que se encaixa melhor ao que o cliente requisitou. Se nenhum método se encaixa, servidor retorna um erro public class SomeResource public String public String dogetashtml() {... Diego Passos (UFF) Web Services (III) TEPIS II 29 / 39

30 JAX-RS: Também já vista em exemplos anteriores. Equivalente para dados de entrada. Segue as mesmas convenções da Pode ser aplicada a uma classe inteira. Pode receber mais de uma especificação de formato de dados. JAX-RS utiliza para identificar qual o método (mais) adequado para tratar uma requisição. De forma similar à se nenhum método declara consumir um dado formato, é retornado um erro 415. Diego Passos (UFF) Web Services (III) TEPIS II 30 / 39

31 JAX-RS: Recebendo Parâmetros Vimos anteriormente um exemplo de obtenção de parâmetros através da URL. Definimos um template usando a Declaramos parâmetros de métodos usando a Mas existem muitas maneiras de um cliente codificar seus parâmetros em uma requisição HTTP: Query. Form. Cookies. Headers. Matrix. A JAX-RS suporta todas estas formas. Diego Passos (UFF) Web Services (III) TEPIS II 31 / 39

32 JAX-RS: Query Parameters São parâmetros passados em uma URL explicitamente. Exemplo: Podemos acessar estes parâmetros com a Podemos ainda definir valores padrão com a Usados em caso public ColorParam lastcolor ) {... Diego Passos (UFF) Web Services (III) TEPIS II 32 / 39

33 JAX-RS: Query Parameters Há restrições em relação aos tipos dos parâmetros. Só se pode usar tipos com as seguintes características: Tipos primitivos, exceto char. Classes correspondentes a tipos primitivos, exceto Character. Qualquer classe com construtor que recebe um único argumento do tipo String. Qualquer classe com um método estático valueof(string). List<T>, Set<T>, SortedSet<T>, onde T cai em um dos casos anteriores. Usado para atributos multi-valorados. Caso não seja possível mapear o valor presente na URL para o tipo do parâmetro, é gerado um erro 400. Exemplo: parâmetro declarado como int, usuário especifica valor teste. Diego Passos (UFF) Web Services (III) TEPIS II 33 / 39

34 JAX-RS: Outros Tipos de Parâmetros Há suporte para as seguintes outras anotações relacionadas a associa um parâmetro a um cookie enviado pelo associa um parâmetro a um header da associa um parâmetro a um campo de formulário enviado pelo associa um parâmetro ao matrix parameter correspondente. Matrix parameters são similares aos query parameters. Mas permitem diferenciar parâmetros por nível da URL. Exemplo: Em todos os casos, a correspondência é feita pelo nome. Nome do parâmetro declarado no método deve bater com o nome do cookie/header/... Note que, no caso o tipo de conteúdo deve ser application/x-www-form-urlencoded. Diego Passos (UFF) Web Services (III) TEPIS II 34 / 39

35 JAX-RS: A Anotação especial que pode ser usada em certos parâmetros de um método. Permite obter informações contextuais. Referências a objetos específicos que contem informações sobre a requisição. Exemplo: Objeto UriInfo: permite obtenção de informações sobre a URL. Objeto HttpHeaders: permite acesso mais direto aos headers. Diego Passos (UFF) Web Services (III) TEPIS II 35 / 39

36 JAX-RS: A (II) Exemplo de public String get(@context UriInfo HttpHeaders hh) { MultivaluedMap<String, String> queryparams = ui.getqueryparameters(); MultivaluedMap<String, String> pathparams = ui.getpathparameters(); MultivaluedMap<String, String> headerparams = hh.getrequestheaders(); Map<String, Cookie> pathparams = hh.getcookies();... return ui.getabsolutepath().tostring(); Diego Passos (UFF) Web Services (III) TEPIS II 36 / 39

37 JAX-RS vs. Servlets De certa forma, a JAX-RS é bem parecida com os Servlets HTTP. Ambos permitem criar aplicações Web. Escrevemos uma classe que é mapeada para uma ou mais URLs. Métodos específicos nesta classe são chamados pelo container quando tipos específicos de requisição são recebidas. Podemos manipular parâmetros, cookies, headers... Qual a diferença, então? Ambas as tecnologias são equivalentes? Diego Passos (UFF) Web Services (III) TEPIS II 37 / 39

38 JAX-RS vs. Servlets (II) A resposta é não. Servlets são componentes capazes de tratar requisições (tipicamente HTTP) em um nível bastante baixo. É possível manipular todos os aspectos das requisições e respostas, desde que obedecidas as regras do protocolo HTTP. Podemos, por exemplo, criar um Web Service RESTful. A JAX-RS é uma API especificamente dedicada a criação de serviços RESTful. Temos controle sobre muita coisa, mas dentro das limitações arquiteturais REST. Por exemplo, não podemos (ou não deveríamos) guardar estado interno sobre os clientes através de sessões. Em suma: É mais fácil implementarmos serviços RESTful com a JAX-RS. Mas temos mais liberdade arquitetural com os Servlets. Diego Passos (UFF) Web Services (III) TEPIS II 38 / 39

39 Referências Conteúdo e exemplos baseados em: Tutorial da Oracle sobre Web Services. Diego Passos (UFF) Web Services (III) TEPIS II 39 / 39

Web Services REST JAX-RS

Web Services REST JAX-RS Web Services REST JAX-RS Professor: Ricardo Luis dos Santos IFSUL 2015 Agenda Principais tecnologias envolvidas Testando os serviços desenvolvidos JAX-RS Principais anotações JAX-RS Principais anotações

Leia mais

REST RESTfulWeb Services JAX-RS

REST RESTfulWeb Services JAX-RS Web Services REST Web Service Serviço oferecido por um sistema que pode ser acessado diretamente por outro sistema desenvolvido em qualquer tecnologia através de uma rede como a internet. Cada plataforma

Leia mais

Web Services no JEE 7. Prof. Fellipe Aleixo ([email protected])

Web Services no JEE 7. Prof. Fellipe Aleixo (fellipe.aleixo@ifrn.edu.br) Web Services no JEE 7 Prof. Fellipe Aleixo ([email protected]) O que são Web Services? Web services are client and server applications that communicate over the World Wide Web's (WWW) HyperText

Leia mais

Web Services REST e JSON

Web Services REST e JSON Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Objetivos Nesta aula

Leia mais

Web Services REST. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo

Web Services REST. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Objetivos Nesta aula

Leia mais

A composição de uma Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos)

A composição de uma Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos) Desenvolvimento de Sistemas Web A composição de uma Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos) Prof. Mauro Lopes 1-31 24 Objetivos Dando continuidade aos estudos sobre JSP,

Leia mais

Prática da Disciplina de Sistemas Distribuídos Web Services REST IFMA DAI Professor Mauro Lopes C. Silva

Prática da Disciplina de Sistemas Distribuídos Web Services REST IFMA DAI Professor Mauro Lopes C. Silva 1. O que é REST e RESTful? Prática da Disciplina de Sistemas Distribuídos Web Services REST IFMA DAI Professor Mauro Lopes C. Silva Nos últimos tempos, uma forte tendência vem mudando a forma de pensar

Leia mais

EA975 - Laboratório de Engenharia de Software

EA975 - Laboratório de Engenharia de Software EA975 - Laboratório de Engenharia de Software Turmas K/L - 2017 Aula 8 Vamos inicialmente especificar com mais detalhes o termo "recurso" utilizado no estilo arquitetural REST. Em REST, recursos são uma

Leia mais

Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos)

Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos) Linguagem de Programação para Web Java Server Pages (Diretivas, Elementos de Script e Objetos Implícitos) Prof. Mauro Lopes 1-31 28 Objetivos Dando continuidade aos estudos sobre JSP, apresentaremos os

Leia mais

EA975 - Laboratório de Engenharia de Software

EA975 - Laboratório de Engenharia de Software EA975 - Laboratório de Engenharia de Software Turmas K/L - 2017 Aula 1 O que vamos desenvolver? Vamos desenvolver uma aplicação distribuída, empregando a arquitetura 3-Tier segundo o estilo REST/HTTP (Respresentational

Leia mais

REST. Representational State Transfer. É um estilo arquitetural usado por muitas aplicações Web para estender as suas funcionalidades.

REST. Representational State Transfer. É um estilo arquitetural usado por muitas aplicações Web para estender as suas funcionalidades. REST Representational State Transfer É um estilo arquitetural usado por muitas aplicações Web para estender as suas funcionalidades. Não é um padrão. Exemplo ASP.NET Web API namespace WebAPIApp.Models

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 3 Classes e instanciação de objectos (em Java) Suponhamos que queremos criar uma classe que especifique a estrutura e o comportamento de objectos do tipo Contador. As instâncias da classe Contador devem

Leia mais

Java RMI. RMI Remote Method Invocation. Chamadas Remotas de Procedimentos (RPC) RPC - Implementação

Java RMI. RMI Remote Method Invocation. Chamadas Remotas de Procedimentos (RPC) RPC - Implementação Java Remote Method Invocation Java Remote Method Invocation () é um protocolo Java para comunicação entre processos Permite objetos Java invocar transparentemente métodos de outros objetos (que podem estar

Leia mais

serviços web J A V A E E 7 RESTful com JAX-RS Helder da Rocha Atualizado em dezembro de 2014

serviços web J A V A E E 7 RESTful com JAX-RS Helder da Rocha Atualizado em dezembro de 2014 serviços web RESTful com JAX-RS Helder da Rocha ([email protected]) Atualizado em dezembro de 2014 Sobre este tutorial Este é um tutorial sobre tecnologia JAX-RS (de acordo com a especificação Java EE 7)

Leia mais

Desenvolvimento de Aplicações Distribuídas

Desenvolvimento de Aplicações Distribuídas SOA e Web Services Pontifícia Universidade Católica de Minas Gerais Instituto de Ciências Exatas e Informática DAD (2019/01) Tópicos Apresentação da disciplina Introdução Desafios e características Arquitetura

Leia mais

Redes de Computadores

Redes de Computadores Redes de Computadores Camada de Aplicação HTTP FTP SMTP Slide 1 Mensagem de Requisição HTTP linha de pedido (comandos GET, POST,HEAD ) linhas de cabeçalho Carriage return, line feed indica fim da mensagem

Leia mais

Redes de Computadores e Aplicações Camada de aplicação IGOR ALVES

Redes de Computadores e Aplicações Camada de aplicação IGOR ALVES Redes de Computadores e Aplicações Camada de aplicação IGOR ALVES Camada de aplicação Um protocolo da camada de aplicação define como processos de uma aplicação, que funcionam em sistemas finais diferentes,

Leia mais

Classes e Objetos. Sintaxe de classe em Java

Classes e Objetos. Sintaxe de classe em Java Classes e Objetos Classes e Objetos A Programação Orientada a Objetos (POO) é uma técnica de programação que se baseia na construção de classes e utilização de objetos. Os objetos são formados por dados

Leia mais

Web Services. Conceitos, SOAP, WSDL, UDDI, Exemplos. Programação com Objetos Distribuídos (C. Geyer) Web Services 1

Web Services. Conceitos, SOAP, WSDL, UDDI, Exemplos. Programação com Objetos Distribuídos (C. Geyer) Web Services 1 Web Services Conceitos, SOAP, WSDL, UDDI, Exemplos Programação com Objetos Distribuídos (C. Geyer) Web Services 1 ! Autores " Sérgio Mergen " Cláudio Geyer " Emanuel Müller Ramos Autoria! Local " Instituto

Leia mais

Iteradores. Iteradores. Isabel Harb Manssour. Roteiro. Coleções

Iteradores. Iteradores. Isabel Harb Manssour. Roteiro. Coleções Implementação de Genéricos, Iteradores Isabel Harb Manssour Porto Alegre, maio de 2006 Roteiro Implementação de Genéricos Coleções Conceito de Genérico Implementação Iteradores Conceito Utilização ForEach

Leia mais

Integração de sistemas utilizando Web Services do tipo REST

Integração de sistemas utilizando Web Services do tipo REST Integração de sistemas utilizando Web Services do tipo REST Jhonatan Wilson Aparecido Garbo, Jaime Willian Dias Universidade Paranaense (Unipar) Paranavaí PR Brasil [email protected] [email protected]

Leia mais

Registro Nacional de Carteira de Habilitação RENACH. Manual do Produto. Versão 2.1

Registro Nacional de Carteira de Habilitação RENACH. Manual do Produto. Versão 2.1 Registro Nacional de Carteira de Habilitação RENACH Manual do Produto Versão 2.1 Junho/2015 Índice 1. INFORMAÇÕES GERAIS SOBRE O PRODUTO... 3 1.1 CONTEXTO... 3 1.2 OBJETIVO... 3 1.3 NOME... 3 1.4 ENDEREÇO

Leia mais

Web Services. Professor: Ricardo Luis dos Santos IFSUL Campus Sapucaia do Sul

Web Services. Professor: Ricardo Luis dos Santos IFSUL Campus Sapucaia do Sul Web Services Professor: Ricardo Luis dos Santos IFSUL 2015 Rápida revisão da última aula 3 Rápida revisão da última aula 1 Listar o filme com o id 475 2 Listar todos os filmes com o título que inicia com

Leia mais

Classes e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos

Classes e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II Classes e Objetos Objetos Um conjunto de estados e comportamentos Classes Um modelo para a criação de objetos 1 Pacotes e Java API Pacotes Um conjunto

Leia mais

Manual de Integração. Tecnologia: WebServices SOAP XML. Área: CDC. Produto: CDC Simplificada (Juridica) Versão: 1.0. Autor: Angelo Bestetti Junior

Manual de Integração. Tecnologia: WebServices SOAP XML. Área: CDC. Produto: CDC Simplificada (Juridica) Versão: 1.0. Autor: Angelo Bestetti Junior Manual de Integração Tecnologia: WebServices SOAP XML Área: CDC Produto: CDC Simplificada (Juridica) Versão: 1.0 Autor: Angelo Bestetti Junior Conteúdo Introdução... 3 Considerações Iniciais... 4 Privacidade...

Leia mais

Classes, Métodos e Propriedades

Classes, Métodos e Propriedades Ambiente de Programação Visual Classes, Métodos e Propriedades Prof. Mauro Lopes 1-31 22 Objetivos Nesta aula iremos dar continuidade aos elementos de programação da Linguagem C#. Iremos apresentar de

Leia mais

arquitetura shared-nothing em 3 camadas

arquitetura shared-nothing em 3 camadas arquitetura shared-nothing em 3 camadas engenharia de sistemas de informação Daniel Cordeiro 29 de agosto de 2017 Escola de Artes, Ciências e Humanidades EACH USP info sobre o projeto projeto: iterações

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract

Leia mais

2 Versão 1: Funcionalidade Básica e Interface Web

2 Versão 1: Funcionalidade Básica e Interface Web Técnicas de Projeto e Implementação de Sistemas II Descrição do Projeto da Disciplina 1 Introdução O projeto da disciplina consiste na implementação de um sistema de busca de tarifas de passagens aéreas.

Leia mais

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; Tudo no mundo real pode ser representado por meio do conceito de "objeto": uma planta, uma mesa, uma pessoa, um sentimento,

Leia mais

EA975 - Laboratório de Engenharia de Software

EA975 - Laboratório de Engenharia de Software EA975 - Laboratório de Engenharia de Software Turmas K/L - 2017 Aula 7 Componentes de Software Um componente de software é um segmento de código que pode ser reusado, eventualmente após um processo de

Leia mais

Protocolo HTTP. - Características. - Modelo Requisição/Resposta. - Common Gateway Interface (CGI)

Protocolo HTTP. - Características. - Modelo Requisição/Resposta. - Common Gateway Interface (CGI) Protocolo HTTP - Características - Modelo Requisição/Resposta - Common Gateway Interface (CGI) Características Hypertext Transfer Protocol (HTTP) Protocolo utilizado para transferir documentos de hipertexto

Leia mais

Java para WEB com Struts 2 e Hibernate

Java para WEB com Struts 2 e Hibernate Java para WEB com Struts 2 e Hibernate Aula 01 http://fernandoanselmo.orgfree.com [email protected] Apresentação Fernando Anselmo [email protected] 25 anos na área de Desenvolvimento

Leia mais

Informática Parte 26 Prof. Márcio Hunecke

Informática Parte 26 Prof. Márcio Hunecke Escriturário Informática Parte 26 Prof. Márcio Hunecke Informática REST A Representational State Transfer (REST), em português Transferência de Estado Representacional, é um estilo de arquitetura que

Leia mais

Webservices LEANDRO MENDES FERREIRA

Webservices LEANDRO MENDES FERREIRA Webservices LEANDRO MENDES FERREIRA Webservices - Agenda CONCEITOS RPC HTTP SOAP RESTFUL CONCEITOS Conceitos Básicos XML (extensible Markup Language) Liguagem de marcação para descrição de documentos de

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares [email protected] Aula 12 Beans Orientados a

Leia mais

1 INTRODUÇÃO CERTIFICADO DE SEGURANÇA SSL AUTENTICAÇÃO WEB METHOD: LOGIN WEB METHOD: LISTBONDCODES...

1 INTRODUÇÃO CERTIFICADO DE SEGURANÇA SSL AUTENTICAÇÃO WEB METHOD: LOGIN WEB METHOD: LISTBONDCODES... ÍNDICE 1 INTRODUÇÃO... 3 2 CERTIFICADO DE SEGURANÇA SSL... 3 3 AUTENTICAÇÃO... 4 4 WEB METHOD: LOGIN... 5 5 WEB METHOD: LISTBONDCODES... 6 6 WEB METHOD: LISTBONDCODESCSV... 6 7 WEB METHOD: LISTTITULOSPUBLICOS...

Leia mais

Sistemas Distribuídos na Web

Sistemas Distribuídos na Web Sistemas Distribuídos na Web Alysson Neves Bessani Departamento de Informática Faculdade de Ciências da Universidade de Lisboa Arquitectura da Web Criada por Tim Berners-Lee no CERN de Geneva Propósito:

Leia mais

13/11/15. Incrementando C: C++ E na especificação de BigInt... Arquitetura da solução exemplo. O arquivo de declarações. Explorando a classe BigInt

13/11/15. Incrementando C: C++ E na especificação de BigInt... Arquitetura da solução exemplo. O arquivo de declarações. Explorando a classe BigInt Incrementando C: permite: Definir uma classe para números grandes; Manter o código bem parecido com o programa C. O mesmo programa em C (e até mesmo em Java) não são tão convenientes e elegantes. #include

Leia mais

O que se espera para o futuro dos Web Services? As tecnologias são respectivamente JSON e REST.

O que se espera para o futuro dos Web Services? As tecnologias são respectivamente JSON e REST. Web Services Por que os Web Services são atrativos para a integração de sistemas? Pois os Web services são componentes que possibilitam que as aplicações se comuniquem utilizando protocolos padrão da internet

Leia mais

EXERCÍCIOS DE REVISÃO DE CONTEÚDO QUESTÕES DISSERTATIVAS

EXERCÍCIOS DE REVISÃO DE CONTEÚDO QUESTÕES DISSERTATIVAS EXERCÍCIOS DE REVISÃO DE CONTEÚDO QUESTÕES DISSERTATIVAS 1. Explique a(s) diferença(s) entre design pattern e framework. 2. Analisar o arquivo de configurações (web.xml) abaixo identificando quais suas

Leia mais

Redes de Computadores I. Sockets e Arquitetura HTTP

Redes de Computadores I. Sockets e Arquitetura HTTP v.2016 Redes de Computadores I Sockets e Arquitetura HTTP Prof. Ricardo Couto A. da Rocha [email protected] UFG Regional Catalão HTTP - O Servidor Web Prof. Dr. Ricardo Couto Antunes da Rocha - Depto. de

Leia mais

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação

Leia mais

Estrutura de Dados Funções e Procedimentos

Estrutura de Dados Funções e Procedimentos Estrutura de Dados Funções e Procedimentos Prof. Salustiano Rodrigues de Oliveira [email protected] www.profsalu.wordpress.com Java A linguagem Java utiliza o paradigma de programação orientada

Leia mais

9 Classes Abstractas e Interfaces

9 Classes Abstractas e Interfaces 9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract

Leia mais

INTRODUÇÃO. RPC x RMI

INTRODUÇÃO. RPC x RMI 1 INTRODUÇÃO RPC x RMI 2 INTRODUÇÃO RPC Remote procedure call Este termo é utilizado para aplicativos clientes que fazem normalmente chamadas a procedimentos remotos que estão em outro processo e hosts.

Leia mais

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... } Recapitulando Orientação a objetos: programas organizados em torno da definição de classes, instanciação de objetos e troca de mensagens. Declaração de variáveis de referencia: Circle c; Criação/instanciação

Leia mais

Classe PHP Client. A classe Zend\Http\Client fornece uma interface para realizar pedidos HTTP.

Classe PHP Client. A classe Zend\Http\Client fornece uma interface para realizar pedidos HTTP. Classe PHP Client A classe Zend\Http\Client fornece uma interface para realizar pedidos HTTP. O método send() é usado para submeter o pedido ao servidor remoto. Estes pedidos retornam um objeto Zend\Http\Response

Leia mais

>>> RESTful API >>> Com Node.js e Restify. Name: Anderson Pimentel Date: 19 de Março de

>>> RESTful API >>> Com Node.js e Restify. Name: Anderson Pimentel Date: 19 de Março de >>> RESTful API >>> Com Node.js e Restify Name: Anderson Pimentel Date: 19 de Março de 2018 [email protected] [~]$ _ [1/31] >>> Agenda 1. Introdução 2. Boas Práticas 3. Hands-on Ambiente

Leia mais

Manual de Integração WebService

Manual de Integração WebService Manual de Integração WebService Sumário 1. O que é a Integração WebService? 2. Envio Simples 2.1 Envio Múltiplo 3. Consultar Status da Mensagem 3.1 Consultar Mensagens Recebidas 4. Tecnologia do WebService

Leia mais

Modelo de Componentes CORBA

Modelo de Componentes CORBA Modelo de Componentes CORBA Cláudia Brito L. N. da Silva [email protected] Roteiro 1. Visão geral 2.! Definindo componentes! Implementando componentes! Empacotando componentes! Instalando componentes!

Leia mais

Manual de Integração do icarta

Manual de Integração do icarta Manual de Integração do icarta Versão 1.00 Abril 2014 Controle de Versões Versão Data 1.00 16/04/2014 1. Introdução Este documento tem por objetivo a definição das especificações e critérios técnicos necessários

Leia mais

contidos na descrição do serviço para localizar, contactar e chamar o serviço. A figura mostra os componentes e a interação entre eles.

contidos na descrição do serviço para localizar, contactar e chamar o serviço. A figura mostra os componentes e a interação entre eles. Web Services Web Service é um componente de software identificado por uma URI que independe de implementação ou de plataforma e pode ser descrito, publicado e invocado sobre uma rede por meio de mensagens

Leia mais

GUIA API BTB /04/2019 INFORMAÇÃO PÚBLICA

GUIA API BTB /04/2019 INFORMAÇÃO PÚBLICA 05/04/019 SUMÁRIO 1 HISTÓRICO DE VERSÕES... 4 INTRODUÇÃO... 5 3 VISÃO GERAL... 5 3.1 Verbos HTTP API - BTB... 5 3. Uso do POST... 6 3.3 Uso do GET... 7 3.4 Endpo... 7 3.5 Restrições... 7 4 ENDEREÇOS DA

Leia mais

Especificação de Integração Linx Microvix WebApi v1.2

Especificação de Integração Linx Microvix WebApi v1.2 X Especificação de Integração Linx Microvix WebApi v1.2 Sumário 1 TECNOLOGIA... 3 2 ESPECIFICAÇÃO... 3 3 ACESSO... 8 4 TIPOS DE DADOS... 9 2/ 11 1 Tecnologia A integração com o Linx Microvix ERP está disponível

Leia mais

REST Um Estilo de Arquitetura de Sistemas Distribuídos

REST Um Estilo de Arquitetura de Sistemas Distribuídos REST Um Estilo de Arquitetura de Sistemas Distribuídos Márcio Alves de Araújo¹, Mauro Antônio Correia Júnior¹ 1 Faculdade de Computação Universidade Federal de Uberlândia (UFU) Monte Carmelo MG Brasil

Leia mais

Danos Pessoais Causados por Veículos Auto Motores de Via Terrestre DPVAT BILHETES. Manual do Produto Versão 2.2

Danos Pessoais Causados por Veículos Auto Motores de Via Terrestre DPVAT BILHETES. Manual do Produto Versão 2.2 Danos Pessoais Causados por Veículos Auto Motores de Via Terrestre DPVAT BILHETES Manual do Produto Versão 2.2 Junho/2016 Índice 1. INFORMAÇÕES GERAIS SOBRE O PRODUTO... 3 1.1 CONTEXTO... 3 1.2 OBJETIVO...

Leia mais

Capítulo 2. Camada de aplicação

Capítulo 2. Camada de aplicação INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIADO RIO GRANDE DO NORTE IFRN Disciplina: Arquitetura de redes de computadores e Tecnologia de Implementação de Redes Professor: M. Sc. Rodrigo Ronner T.

Leia mais

1 INTRODUÇÃO CERTIFICADO DE SEGURANÇA SSL AUTENTICAÇÃO WEB METHOD: LOGIN WEB METHOD: LISTBONDCODES...

1 INTRODUÇÃO CERTIFICADO DE SEGURANÇA SSL AUTENTICAÇÃO WEB METHOD: LOGIN WEB METHOD: LISTBONDCODES... ÍNDICE 1 INTRODUÇÃO... 3 2 CERTIFICADO DE SEGURANÇA SSL... 3 3 AUTENTICAÇÃO... 4 4 WEB METHOD: LOGIN... 5 5 WEB METHOD: LISTBONDCODES... 6 6 WEB METHOD: LISTBONDCODESCSV... 6 7 WEB METHOD: LISTTITULOSPUBLICOS...

Leia mais

Implementar um exemplo de relacionamento entre classes um para muitos (1:N) e um para um (1:1). Sistema para uma Promotora de Evento Agenda Anual

Implementar um exemplo de relacionamento entre classes um para muitos (1:N) e um para um (1:1). Sistema para uma Promotora de Evento Agenda Anual Aula 09 Objetivo Implementar um exemplo de relacionamento entre classes um para muitos (1:N) e um para um (1:1). Sistema para uma Promotora de Evento Agenda Anual Banco de Dados 1. Crie um novo projeto

Leia mais

Linguagem de Programação III

Linguagem de Programação III Linguagem de Programação III Aula-4 Construtores e Sobrecarga Prof. Esbel Tomás Valero Orellana Até Aqui Modelos e POO Classes e sua implementação em Java Encapsulamento Tipos de dados nativos em Java

Leia mais

EA975 - Laboratório de Engenharia de Software. Objetivo do curso. Turmas K/L Aula 1

EA975 - Laboratório de Engenharia de Software. Objetivo do curso. Turmas K/L Aula 1 EA975 - Laboratório de Engenharia de Software Objetivo do curso Exercitar na prática as técnicas de desenvolvimento de software estudadas no curso EA976 - Engenharia de Software. Turmas K/L - 2019 Aula

Leia mais

Sistemas distribuídos. Prof. Emiliano Monteiro

Sistemas distribuídos. Prof. Emiliano Monteiro Sistemas distribuídos Prof. Emiliano Monteiro Serviços web (web services) Nos serviços web um cliente específico de uma determinada aplicação interage pela Internet com um serviço que possui uma interface

Leia mais

Base de Dados de Veículos BDV. Documentação do Web Service Versão 1.3

Base de Dados de Veículos BDV. Documentação do Web Service Versão 1.3 Base de Dados de Veículos BDV Documentação do Web Service Versão 1.3 Índice 1. INFORMAÇÕES GERAIS SOBRE O SERVIÇO... 3 1.1 CONTEXTO... 3 1.2 OBJETIVO... 3 1.3 NOME... 3 1.4 ENDEREÇO DO ARQUIVO WSDL...

Leia mais

Desenvolvimento Web II

Desenvolvimento Web II Desenvolvimento Web II Web Service PHP Rest Frameworks: Slim e Laravel (get/ post / put / delete) Gil Eduardo de Andrade Web Service Introdução: Um web service pode ser definido como uma tecnologia que

Leia mais

Figura 1: Eclipse criação de um Dynamic Web Project

Figura 1: Eclipse criação de um Dynamic Web Project Prática da Disciplina de Sistemas Distribuídos Web Services Parte 2 IFMA DAI Professor Mauro Lopes C. Silva 1. Criação de um Serviço Rest Utilizando a configuração realizada na prática anterior, iremos

Leia mais

Protocolo HTTP. Professor Leonardo Larback

Protocolo HTTP. Professor Leonardo Larback Protocolo HTTP Professor Leonardo Larback Protocolo HTTP No final da década de 1980, Tim Berners-Lee criou o protocolo HTTP (HyperText Transfer Protocol) e o padrão de arquivo HTML (HyperText Markup Language)

Leia mais

Vetores. IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

Vetores. IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli Vetores De modo geral, em linguagem de programação, vetores ou arrays são estruturas de dados que permitem que uma mesma variável possa armazenar mais de um valor; Em Java, vetores são coleções de dados,

Leia mais

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto Suporte para Programação Orientada a Objeto Cristiano Lehrer Categoria das Linguagens que Suportam POO Suporte a POO acrescentado a uma linguagem já existente: C++ (também suporta programação procedural

Leia mais

Capítulo 7. A camada de aplicação

Capítulo 7. A camada de aplicação Capítulo 7 A camada de aplicação slide 1 slide 2 DNS Sistema de Nomes de Domínio O espaço de nomes DNS Registros de recursos de domínio Servidores de nome slide 3 O espaço de nomes DNS (1) Parte do espaço

Leia mais