Novidades do JAX-RS 2.0
Upcoming SlideShare
Loading in...5
×
 

Novidades do JAX-RS 2.0

on

  • 1,331 views

Apresentação sobre JAX-RS 2.0 para o TDC 2012 - Edição de Florianópolis.

Apresentação sobre JAX-RS 2.0 para o TDC 2012 - Edição de Florianópolis.

Statistics

Views

Total Views
1,331
Views on SlideShare
1,328
Embed Views
3

Actions

Likes
1
Downloads
12
Comments
0

1 Embed 3

https://twitter.com 3

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Novidades do JAX-RS 2.0 Novidades do JAX-RS 2.0 Presentation Transcript

  • Novidades doJAX-RS 2.0Web Services RESTful com Java
  • Quem é William● Usuário "Jesuino" do JavaFree e do GUJ● Formado na FATEC de São José dos Campos● Trabalhou com ABAP, BI e C. Atualmente Analista de Suporte na Red Hat● Comunidade JavaFX● Trabalha com JBoss e Portais● Um dos Organizadores do JUG Vale
  • Agenda● Análise do problema● Web Services tradicionais● REST● RESTful WEB Services● REST e Java● JAX-RS 1.0● Novidades do JAX-RS 2.0
  • O problemaComo integrar sistemas implementadoscom tecnologias variadas em ambientes distintos?
  • Padrões complexos e dependência de vendedores A II B ORM O R P I C DC OM C E DPrimeiras soluções eram complicadas
  • Web Services Tradicionais Basicamente troca de informação em XML entre o servidor e o cliente SOAP ao resgate● Padrões abertos● Independência de plataforma e linguagem de programação● Total desacoplamento entre ambas partes
  • Uma URL, um método HTTP, vários XMLshttp://www.w3schools.com/soap/soap_example.asp
  • Autenticação? Autorização? Anexos? SSO?Arquitetura? Encriptação? Transações?Necessidades foram surgindo com o uso
  • Infinitos padrões● WS-* ○ WS-Security ○ WS-Transaction ○ WS-Transfer ○ WS-Policy ○ WS-Signature ○ WS-Encryption ○ WS-Trust ○ WS-Federation ○ WS-Discovery ○ WS-Eventing ○ ...● Arquiteturas complexa● Centenas de ferramentas
  • Complicou de novo. E agora?REST your SOAP, and don’t worry, be happy Frase retirada desse artigo: http://demystifyit.com/hello-world/
  • REST● Estilo Arquitetural● Tese PHD de Roy Fielding● "Engenharia reversa do funcionamento da WEB"● Orientada a recursos
  • Principais características● Tudo é um recurso● Cada recurso tem um identificador único● O servidor não mantém estado do cliente (stateless)● Comunicação através de métodos padronizados (interface uniforme)● Recursos tem representações● Recursos devem ligar-se uns aos outros
  • Entendendo REST comHTTP● Identificação única: URI● Stateless: HTTP é Stateless por padrão● Interface Uniforme: Métodos HTTP (GET, POST...) e códigos de erro (404, 500...)● Ligação de recursos: Uso de links
  • Segurança? Anexos?Transações?● HTTP já prevê tudo isso!● O que não é previsto, alguém já fez com HTTP/REST e escreveu em algum lugar● Não há necessidade de reinventar a roda
  • RESTful WEB Services● WEB Services que seguem os príncipios REST● Métodos idempotentes (PUT, DELETE) e seguros(GET)● Livro "RESTful Serviços Web"
  • Um simples exemplo Agenda de contatos REST Objetivo URI Método Recebe Retorna Código HTTP respostaCriar /contatos POST XML/JSON - 201, 400Listar Todos /contatos GET - XML/JSON 200Recupera por /contatos/{id} GET - XML/JSON 200, 404IDAtualizar /contatos/{id} PUT XML/JSON XML/JSON 200, 404, 400Apagar /contatos/{id} DELETE - - 204, 404
  • Ok, já entendemos REST...William, Por que você não fala de Java?
  • REST com Java● Como fazer RESTful WEB Services com Java?● JAX-RS é especificação Java para criação de WEB Service nesse estilo● Orientada a Pojos e anotações e foco no HTTP● JSR 311(JAX-RS 1) e JSR 339 (JAX-RS 2.0)● Incluída no JavaEE 6(versão 1.1)● Permite deploy em qualquer container WEB ou servidor de aplicação (Tomcat, Jetty, JBoss...)● Três principais implementações: RESTEasy, CXF, Jersey
  • Nosso exemplo traduzido em códigoInterface usando as anotações JAX-RS para o exemplo Agenda de Contatos
  • URI Base para os métodos JAX-RS Método HTTP Representações aceitas
  • Representações retornadas Valor Default caso parâmetro não seja informado Parâmetros de "Query" ({uri}?param=value) Parâmetro retirado da URI Objeto será "parseado" automaticamente
  • JAX-RS 1 é completo?● JAX-RS 1 é bom, mas não é perfeito, pois não cobre todas as necessidades de serviços REST● Está em desenvolvimento a versão 2.0 dessa especificação e o que está sendo trabalhado é: ■ API Cliente ■ Request Suspensas ■ Validação (integração com JSR X) ■ Interceptores e Handlers ■ Ligação de Recursos ■ JAX-RS 2.0 será parte do Java EE 7
  • API Cliente● Criar um cliente é fácil, mas eles não vão ser JAX-RS "aware";● A API Client permite através do modelo de programação usando "builders"● Permite configuração por cada pedaço da URL● É possível também pegar a resposta diretamente em classes de modelo● Permite o registro de "providers"● A request pode ser assíncrona
  • Exemplo Cliente
  • Suspensão de RequestsSe seu método JAX-RS for fazer algo custoso,que trave a thread da requisição, será possível suspender essa tarefa.
  • Exemplo
  • Filtros e Interceptores● Para realizar registro das chamadas, segurança adicional, modificação do conteúdo...● É possível abortar a requisição usando abortWith (Response)● Há três os seguintes tipos de filtros ClientRequest, ClientResponse, ContainerRequest, ContainerResponse and PostContainerRequest;● Pode ser usado na request ou na response do método JAX-RS.
  • Exemplo Filtros
  • InterceptoresSemelhantes aos filtros temos os interceptores que podem ser invocados em volta da leitura (request) e escrita(response) do corpo da mensagem HTTP
  • Exemplo Interceptor
  • Outras informações● Filtros e interceptores são organizados em corrente● É possível definir prioridades sobre os filtros● Você pode escolher o método a ser filtrado/interceptado usando anotações customizadas (Binding)● O Binding pode ser dinâmico também através da implementação da interface DynamicBinder● Filtros podem ser usados no lado cliente também
  • Validações● Os parâmetros recebidos podem ser validados de acordo com a JSR Bean Validation● Através de anotações é possível definir restrições para os parâmetros enviados ao servidor● Você pode criar validações de acordo com seu sistema
  • O que mais pode ser feito?● Suporte a MVC (pouco provável)● Linking● Melhorias na integração com CDI - JSR 330 Você gostaria de algo mais? Participe das discussões da JSR 339
  • Dúvidas?Obrigado!@william_antonio