Web Services Implementação

download Web Services Implementação

of 39

Transcript of Web Services Implementação

  • 7/26/2019 Web Services Implementao

    1/39

    2015 Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-Grandense

    Campus Sapucaia do Sul

    Web Services REST JAX-RSProfessor: Ricardo Luis dos Santos

    IFSUL Campus Sapucaia do Sul

  • 7/26/2019 Web Services Implementao

    2/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    2

    Agenda

    Principais tecnologias envolvidas

    Testando os servios desenvolvidos

    JAX-RS

    Principais anotaes JAX-RS

    Principais anotaes JAXB

    Entendendo o Web Service

    Configurar o ambiente

    Exemplo de Web Services REST

    Exerccio

  • 7/26/2019 Web Services Implementao

    3/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    3

    Principais tecnologias envolvidas

    JAX-RS uma especificao que permite criar RESTfulWeb services (anloga a JAX-WS para SOAP)

    Jersey a principal implementao da especificao

    JAX-RS JAXB (Java Architecture for XML Binding) permite

    parsear objetos para arquivos XML ou JSON

    Tomcat o servidor Web utilizado para executar asaplicaes Java

  • 7/26/2019 Web Services Implementao

    4/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    4

    Testando os servios desenvolvidos

    HttpRequester (Firefox)

  • 7/26/2019 Web Services Implementao

    5/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    5

    Testando os servios desenvolvidos

    DHC (Chrome)

  • 7/26/2019 Web Services Implementao

    6/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    6

    Testando os servios desenvolvidos

    Soap UI (Vrios SOs Linux, Windows e Mac OS)

  • 7/26/2019 Web Services Implementao

    7/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    7

    JAX-RS

    Objetivo Descrio

    Foco em POJOsA API vai oferecer um conjunto de anotaes e classes/interfacesassociadas que possam ser usadas com POJOs para exp-loscomo recursos Web

    Explorar bem o HTTPHTTP assumido como o protocolo de aplicao, permitindoutilizar os diferentes mtodos implementados no protocolo

    Independncia deformato

    A API permitir o uso de diversos content-types. O suporte aoscontent-types ser feito de uma forma plugvel que defina umaforma padro de extenso para o suporte a novos tipos decontedo

    Independncia decontainer

    Ser possvel o deploymentem qualquer servidor de aplicaesJava EE e tambm nos containers de Servlets

  • 7/26/2019 Web Services Implementao

    8/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    8

    Principais anotaes JAX-RS

    Para acessar recursos so definidas diversasanotaes correspondentes aos mtodos HTTP

    @GET Implementa um WS para obter informaes de umrecurso

    @POST Implementa um WS para criar um recurso

    @PUT Implementa um WS para atualizar um recurso

    @DELETE Implementa um WS para deletar um recurso

    Elas devem ser atribudas a mtodos pblicos As principais anotaes esto presentes no pacotejavax.ws.rs

  • 7/26/2019 Web Services Implementao

    9/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    9

    Principais anotaes JAX-RS

    @Path(/repositorio/{id})

    Pode ser colocada na declarao de classe ou de ummtodo e possui o elemento value obrigatrio

    Por este elemento definimos o prefixo da URI que a classeou o mtodo ir atender

    Aqui a URI relativa /repositorio/{id}, na qual {id} o valordo parmetro id, fornecido junto a URI

    Geralmente includa na declarao de um mtodo quandoqueremos atribuir um caminho mais especfico para umrecurso, de forma a especializar nosso mtodo

  • 7/26/2019 Web Services Implementao

    10/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    10

    Principais anotaes JAX-RS

    @Produces

    Especifica os tipos MIME que o mtodo produzir comoresposta para o cliente

    @Consumes Especificas os tipos MIME que o mtodo pode receber do

    cliente

    Para ambos podemos utilizar

    MediaType.APPLICATION_XML

    MediaType.APPLICATION_JSON

    MediaType.TEXT_PLAIN

    MediaType.TEXT_HTML

  • 7/26/2019 Web Services Implementao

    11/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    11

    Principais anotaes JAX-RS

    Pequeno exemplo de Web Service REST

  • 7/26/2019 Web Services Implementao

    12/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    12

    Principais anotaes JAX-RS

    Extraindo Valores

    Anotao Descrio

    @PathParam Especifica que o valor do parmetro, ser extrado do valor de um

    parmetro indicado na URI, colocado na anotao @Path({param})@QueryParam Extrai o valor do parmetro da URI Ex: ?idade=29&uf=RS

    @FormParam Associa um parmetro a um campo de formulrio enviado pelocliente

    @MatrixParam Extrai informaes do caminho de uma URI Ex: ;idade=29;uf=RS

    @CookieParam Extrai os valores de cookies vinculados sesso

    @HeaderParam Extrai dados do cabealho de uma requisio HTTP

  • 7/26/2019 Web Services Implementao

    13/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    13

    Principais anotaes JAX-RS

    Extraindo Valores

  • 7/26/2019 Web Services Implementao

    14/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    14

    Principais anotaes JAX-RS

    Algumas observaes:

    Uma mesma varivel pode ser especificada mltiplas vezesem uma anotao @Path.

    Exemplo: @Path("/users/{nome}/{nome}")

    Neste caso, s sero aceitas requisies a URLs cujos dois ltimoscomponentes sejam iguais

    Variveis podem ser vazias. Exemplo:

    @Path("/users/{nome}/home")

    Cliente acessa URL /users//home A varivel nome ganha o valor (String vazia)

    Note ainda que a anotao @Path pode ser usada paramtodos especficos

    Aquele mtodo ser mapeado para aquela URL

  • 7/26/2019 Web Services Implementao

    15/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    15

    Principais anotaes JAX-RS

    Podemos ainda definir valores padro com aanotao @DefaultValue

    Usados em caso de omisso

  • 7/26/2019 Web Services Implementao

    16/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    16

    Principais anotaes JAX-RS

    H restries em relao aos tipos dos parmetros

    S se pode usar tipos com as seguintes caractersticas:

    Tipos primitivos, exceto char

    Classes correspondentes a tipos primitivos, exceto Character

    Qualquer classe com construtor que recebe um nico argumento dotipo String

    Qualquer classe com um mtodo esttico valueOf(String)

    List, Set, SortedSet, onde T cai em um dos casos

    anteriores. Caso no seja possvel mapear o valor presente na URL para

    o tipo do parmetro, gerado um erro 400

    Exemplo: parmetro declarado como int, usurio especifica valorteste

  • 7/26/2019 Web Services Implementao

    17/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    17

    Principais anotaes - JAXB

    Java Architecture for XML Binding (JAXB) fornece aAPI, as ferramentas e um framework para mapeardocumentos (XML) e objetos Java

    Realiza o marshalling (serializao JAVA -> XML) eunmarshalling (deserializao XML -> JAVA) docontedo de documentos para representaes Java

    As anotaes esto presentes no pacote

    javax.xml.bind.annotation So utilizadas normalmente nos POJOs

  • 7/26/2019 Web Services Implementao

    18/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    18

    Principais anotaes - JAXB

    Classes

    @XmlRootElement

    Indica que a classe ser representada como um elemento XMLprincipal

    Pode alterar o nome do elemento atravs do valor name=

    @XmlAccessorType(XmlAccessType.FIELD)

    Indica a localizao das anotaes, no caso esto nos campos doPOJO

    @XmlType(propOrder = {"id", "nome", "email", "cpf","endereco", "nascimento"})

    Indica que a classe mapeia informaes especficas

    Permite determinar, por exemplo, a order que os elementos seroexibidos

  • 7/26/2019 Web Services Implementao

    19/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    19

    Principais anotaes - JAXB

    Classes

    @XmlEnum(String.class)

    Permite mapear uma classe enum com as devidas anotaes emcada valor

    Atributos

    @XmlEnumValue(ACAO)

    Mapeia um valor de um enum

    @XmlElementWrapper Mapeia um objeto do tipo lista (com tags filhas)

    @XmlElement(name = "contrato")

    Utilizada tanto nos atributos quanto nos mtodos, indica que oatributo ser um atributo XML

  • 7/26/2019 Web Services Implementao

    20/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    20

    Principais anotaes - JAXB

    Atributos

    @XmlAttribute(name=num_cpf)

    Mapeia o valor de um campo como atributo no arquivo XML

    @XmlList Permite mapear atributos como listas dentro de uma nica tag XML

    @XmlSchemaType(name = "date")

    Permite definir o mapeamento de diferentes tipos em Java

    @XmlTransient Permite definir que um atributo no ser utilizado nas aes de

    serializao e deserializao de objetos

  • 7/26/2019 Web Services Implementao

    21/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    21

    Entendendo o Web service

    A implementao do mtodo OPTIONS interessante

    Ela retorna (como esperado) o conjunto de requisies queso suportadas

    Mas tambm retorna um documento WADL

  • 7/26/2019 Web Services Implementao

    22/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    22

    Entendendo o Web service

    WADL (Web Application Description Language)?

    O WADL um formato de documento utilizado paradescrever aplicaes Web em geral

    Hoje, o exemplo mais comum de uso com os RESTful Web Services

    Prov informao sobre as operaes oferecidas

    Parmetros esperados

    Formato da entrada

    Formato da resposta

    o equivalente para RESTful Web Services do WSDL paraBig Web Services

  • 7/26/2019 Web Services Implementao

    23/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    23

    Entendendo o Web service

    Exemplo WADL

  • 7/26/2019 Web Services Implementao

    24/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    24

    Configurar o ambiente

    Configurao de um RESTful web service

    ApplicationConfig.java

  • 7/26/2019 Web Services Implementao

    25/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    25

    Configurar o ambiente

    Configurao de um RESTful web service

    ApplicationConfig.java

    Adicionar cada classe dos servios

    desenvolvidos

    Informar aqui o padro de URL

    utilizada

  • 7/26/2019 Web Services Implementao

    26/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    26

    Configurar o ambiente

    Configurao de um RESTful web service

    Web.xml (precedncia)

  • 7/26/2019 Web Services Implementao

    27/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    27

    Configurar o ambiente

    Configurao de um RESTful web service

    Web.xml (precedncia)

    Adicionar aqui o pacote que contenha os

    servios desenvolvidos

    Informar aqui o padro de URL

    utilizada

  • 7/26/2019 Web Services Implementao

    28/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    28

    Exemplo de Web Services - REST

    Mtodo GET

  • 7/26/2019 Web Services Implementao

    29/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    29

    Exemplo de Web Services - REST

    Consumindo GET

    Construtor do cliente

    Consumo

  • 7/26/2019 Web Services Implementao

    30/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    30

    Exemplo de Web Services - REST

    Consumindo GET

    Lista

  • 7/26/2019 Web Services Implementao

    31/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    31

    Exemplo de Web Services - REST

    Mtodo POST

  • 7/26/2019 Web Services Implementao

    32/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    32

    Exemplo de Web Services - REST

    Consumindo POST

  • 7/26/2019 Web Services Implementao

    33/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    33

    Exemplo de Web Services - REST

    Mtodo PUT

  • 7/26/2019 Web Services Implementao

    34/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    34

    Exemplo de Web Services - REST

    Consumindo PUT

  • 7/26/2019 Web Services Implementao

    35/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    35

    Exemplo de Web Services - REST

    Mtodo DELETE

  • 7/26/2019 Web Services Implementao

    36/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    36

    Exemplo de Web Services - REST

    Consumindo DELETE

  • 7/26/2019 Web Services Implementao

    37/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    37

    Exerccio

    Fazer download do projeto WSRest

    Configurar o persistence.xml

    Criar a base de dados apropriada

    Observar os Web Services implementados

    Testar os Web Services mais simples (GET)diretamente no navegador

    Testar os Web Services atravs do clienteimplementado dentro do projeto

  • 7/26/2019 Web Services Implementao

    38/39

    Instituto Federal de Educao, Cincia e Tecnologia Sul-Rio-GrandenseCampus Sapucaia do Sul

    38

    Exerccio

    Gerar um POJO para Transporte conforme a classeabaixo, persistindo no BD

    Gerar o DAO para cadastrar novos locais de entrega e

    o valor atrelado a estes, por peso Gerar os devidos servios para as operaes CRUD

    sobre essa entidade

    Criar um cliente para acessar os servios

    desenvolvidos

    - estado: String

    - valor: Int

    - peso: Float

    Transporte

  • 7/26/2019 Web Services Implementao

    39/39

    Perguntas?