novidades do jax-rs 2.0

Download Novidades do JAX-RS 2.0

Post on 24-Jun-2015

982 views

Category:

Documents

1 download

Embed Size (px)

DESCRIPTION

Apresentao sobre JAX-RS 2.0 para o TDC 2012 - Edio de Florianpolis.

TRANSCRIPT

  • 1. Novidades doJAX-RS 2.0Web Services RESTful com Java

2. Quem William Usurio "Jesuino" do JavaFree e do GUJ Formado na FATEC de So Jos dosCampos Trabalhou com ABAP, BI e C. AtualmenteAnalista de Suporte na Red Hat Comunidade JavaFX Trabalha com JBoss e Portais Um dos Organizadores do JUG Vale 3. Agenda Anlise do problema Web Services tradicionais REST RESTful WEB Services REST e Java JAX-RS 1.0 Novidades do JAX-RS 2.0 4. O problemaComo integrar sistemas implementadoscom tecnologias variadas em ambientesdistintos? 5. Padres complexos e dependnciade vendedoresA II B ORMO RP ICDC OMC E DPrimeiras solues eram complicadas 6. Web Services TradicionaisBasicamente troca de informao em XML entre o servidor e o clienteSOAP ao resgate Padres abertos Independncia de plataforma elinguagem de programao Total desacoplamento entreambas partes 7. Uma URL, um mtodo HTTP, vrios XMLshttp://www.w3schools.com/soap/soap_example.asp 8. Autenticao? Autorizao?Anexos?SSO?Arquitetura?Encriptao?Transaes?Necessidades foram surgindo com o uso 9. Infinitos padres 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. Complicou de novo. E agora?REST your SOAP, and dont worry, be happy Frase retirada desse artigo: http://demystifyit.com/hello-world/ 11. REST Estilo Arquitetural Tese PHD de Roy Fielding "Engenharia reversa dofuncionamento da WEB" Orientada a recursos 12. Principais caractersticas Tudo um recurso Cada recurso tem um identificador nico O servidor no mantm estado do cliente(stateless) Comunicao atravs de mtodospadronizados (interface uniforme) Recursos tem representaes Recursos devem ligar-se uns aos outros 13. Entendendo REST comHTTP Identificao nica: URI Stateless: HTTP Stateless por padro Interface Uniforme: Mtodos HTTP (GET,POST...) e cdigos de erro (404, 500...) Ligao de recursos: Uso de links 14. Segurana? Anexos?Transaes? HTTP j prev tudo isso! O que no previsto, algum j fez comHTTP/REST e escreveu em algum lugar No h necessidade de reinventar a roda 15. RESTful WEB Services WEB Services que seguem os prncipios REST Mtodos idempotentes (PUT, DELETE) e seguros(GET) Livro "RESTful Servios Web" 16. Um simples exemploAgenda de contatos RESTObjetivoURI Mtodo Recebe Retorna Cdigo HTTPrespostaCriar/contatosPOST XML/JSON - 201, 400Listar Todos /contatosGET-XML/JSON 200Recupera por /contatos/{id} GET-XML/JSON 200, 404IDAtualizar/contatos/{id} PUTXML/JSON XML/JSON 200, 404, 400Apagar /contatos/{id} DELETE -- 204, 404 17. Ok, j entendemos REST...William, Por que voc no fala de Java? 18. REST com Java Como fazer RESTful WEB Services com Java? JAX-RS especificao Java para criao de WEBService nesse estilo Orientada a Pojos e anotaes e foco no HTTP JSR 311(JAX-RS 1) e JSR 339 (JAX-RS 2.0) Includa no JavaEE 6(verso 1.1) Permite deploy em qualquer container WEB ou servidorde aplicao (Tomcat, Jetty, JBoss...) Trs principais implementaes: RESTEasy, CXF,Jersey 19. Nosso exemplo traduzidoem cdigoInterface usando as anotaes JAX-RS para o exemplo Agenda de Contatos 20. URI Base para os mtodos JAX-RSMtodo HTTP Representaes aceitas 21. Representaes retornadas Valor Default caso parmetro no sejainformadoParmetros de "Query" ({uri}?param=value) Parmetro retirado da URI Objeto ser "parseado" automaticamente 22. JAX-RS 1 completo? JAX-RS 1 bom, mas no perfeito, pois no cobretodas as necessidades de servios REST Est em desenvolvimento a verso 2.0 dessaespecificao e o que est sendo trabalhado : API Cliente Request Suspensas Validao (integrao com JSR X) Interceptores e Handlers Ligao de Recursos JAX-RS 2.0 ser parte do Java EE 7 23. API Cliente Criar um cliente fcil, mas eles no vo ser JAX-RS"aware"; A API Client permite atravs do modelo deprogramao usando "builders" Permite configurao por cada pedao da URL possvel tambm pegar a resposta diretamente emclasses de modelo Permite o registro de "providers" A request pode ser assncrona 24. Exemplo Cliente 25. Suspenso de RequestsSe seu mtodo JAX-RS for fazer algo custoso,que trave a thread da requisio, ser possvelsuspender essa tarefa. 26. Exemplo 27. Filtros e Interceptores Para realizar registro das chamadas, seguranaadicional, modificao do contedo... possvel abortar a requisio usando abortWith(Response) H trs os seguintes tipos de filtros ClientRequest,ClientResponse, ContainerRequest,ContainerResponse and PostContainerRequest; Pode ser usado na request ou na response do mtodoJAX-RS. 28. Exemplo Filtros 29. InterceptoresSemelhantes aos filtros temos os interceptores que podem ser invocados em volta da leitura(request) e escrita(response) do corpo damensagem HTTP 30. Exemplo Interceptor 31. Outras informaes Filtros e interceptores so organizados em corrente possvel definir prioridades sobre os filtros Voc pode escolher o mtodo a ser filtrado/interceptadousando anotaes customizadas (Binding) O Binding pode ser dinmico tambm atravs daimplementao da interface DynamicBinder Filtros podem ser usados no lado cliente tambm 32. Validaes Os parmetros recebidos podem servalidados de acordo com a JSR BeanValidation Atravs de anotaes possvel definirrestries para os parmetros enviados aoservidor Voc pode criar validaes de acordo comseu sistema 33. O que mais pode ser feito? Suporte a MVC (pouco provvel) Linking Melhorias na integrao com CDI - JSR 330Voc gostaria de algo mais?Participe das discusses da JSR 339 34. Dvidas?Obrigado!@william_antonio