0
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...
Agenda●   Análise do problema●   Web Services tradicionais●   REST●   RESTful WEB Services●   REST e Java●   JAX-RS 1.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   ...
Web Services Tradicionais    Basicamente troca de informação em XML           entre o servidor e o cliente                ...
Uma URL, um método HTTP, vários XMLshttp://www.w3schools.com/soap/soap_example.asp
Autenticação? Autorização?                Anexos?                                    SSO?Arquitetura?                     ...
Infinitos padrões● WS-*  ○ WS-Security  ○ WS-Transaction  ○ WS-Transfer  ○ WS-Policy  ○ WS-Signature  ○ WS-Encryption  ○ W...
Complicou de novo. E agora?REST your SOAP, and don’t worry, be happy                     Frase retirada desse artigo: http...
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 cl...
Entendendo REST comHTTP● Identificação única: URI● Stateless: HTTP é Stateless por padrão● Interface Uniforme: Métodos HTT...
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 ...
RESTful WEB Services● WEB Services que seguem os príncipios REST● Métodos idempotentes (PUT, DELETE) e seguros(GET)● Livro...
Um simples exemplo  Agenda de contatos REST  Objetivo          URI         Método       Recebe       Retorna     Código   ...
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...
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            ...
JAX-RS 1 é completo?● JAX-RS 1 é bom, mas não é perfeito, pois não cobre    todas as necessidades de serviços REST●   Está...
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 d...
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          ...
Exemplo
Filtros e Interceptores● Para realizar registro das chamadas, segurança    adicional, modificação do conteúdo...●   É poss...
Exemplo Filtros
InterceptoresSemelhantes aos filtros temos os interceptores que podem ser invocados em volta da leitura  (request) e escri...
Exemplo Interceptor
Outras informações● Filtros e interceptores são organizados em corrente● É possível definir prioridades sobre os filtros● ...
Validações● Os parâmetros recebidos podem ser  validados de acordo com a JSR Bean  Validation● Através de anotações é poss...
O que mais pode ser feito?● Suporte a MVC (pouco provável)● Linking● Melhorias na integração com CDI - JSR 330        Você...
Dúvidas?Obrigado!@william_antonio
Novidades do JAX-RS 2.0
Novidades do JAX-RS 2.0
Upcoming SlideShare
Loading in...5
×

Novidades do JAX-RS 2.0

1,002

Published on

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

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,002
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
16
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Novidades do JAX-RS 2.0"

  1. 1. Novidades doJAX-RS 2.0Web Services RESTful com Java
  2. 2. 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
  3. 3. 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
  4. 4. O problemaComo integrar sistemas implementadoscom tecnologias variadas em ambientes distintos?
  5. 5. 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
  6. 6. 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
  7. 7. Uma URL, um método HTTP, vários XMLshttp://www.w3schools.com/soap/soap_example.asp
  8. 8. Autenticação? Autorização? Anexos? SSO?Arquitetura? Encriptação? Transações?Necessidades foram surgindo com o uso
  9. 9. 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
  10. 10. Complicou de novo. E agora?REST your SOAP, and don’t worry, be happy Frase retirada desse artigo: http://demystifyit.com/hello-world/
  11. 11. REST● Estilo Arquitetural● Tese PHD de Roy Fielding● "Engenharia reversa do funcionamento da WEB"● Orientada a recursos
  12. 12. 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
  13. 13. 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
  14. 14. 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
  15. 15. RESTful WEB Services● WEB Services que seguem os príncipios REST● Métodos idempotentes (PUT, DELETE) e seguros(GET)● Livro "RESTful Serviços Web"
  16. 16. 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
  17. 17. Ok, já entendemos REST...William, Por que você não fala de Java?
  18. 18. 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
  19. 19. Nosso exemplo traduzido em códigoInterface usando as anotações JAX-RS para o exemplo Agenda de Contatos
  20. 20. URI Base para os métodos JAX-RS Método HTTP Representações aceitas
  21. 21. 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
  22. 22. 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
  23. 23. 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
  24. 24. Exemplo Cliente
  25. 25. 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.
  26. 26. Exemplo
  27. 27. 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.
  28. 28. Exemplo Filtros
  29. 29. InterceptoresSemelhantes aos filtros temos os interceptores que podem ser invocados em volta da leitura (request) e escrita(response) do corpo da mensagem HTTP
  30. 30. Exemplo Interceptor
  31. 31. 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
  32. 32. 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
  33. 33. 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
  34. 34. Dúvidas?Obrigado!@william_antonio
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×