rest in peace com jboss resteasy

24
REST IN PEACE com JBOSS RESTEasy

Upload: arthur-cesar-oreana

Post on 08-Jul-2015

1.777 views

Category:

Technology


2 download

DESCRIPTION

JAX-RS: API Java para Web Services RESTful

TRANSCRIPT

Page 1: Rest In Peace com JBOSS RESTEasy

RESTIN

PEACEcom

JBOSS RESTEasy

Page 2: Rest In Peace com JBOSS RESTEasy

• Quem sou eu?

• Conceitos

• JAX-RS

• Hands on!

• Dúvidas

• Referências

O que vamos fazer hoje, Cérebro?

Page 3: Rest In Peace com JBOSS RESTEasy

• Graduado em Sistemas de Informação

• Consultor – Powerlogic S.A.

• Entuasiasta de software livre!

Quem sou eu?

Page 4: Rest In Peace com JBOSS RESTEasy

• Aplicações que se comunicam sobre HTTP

• Universo de possibilidades

– Integração entre diferentes plataformas e aplicações

– Interoperabilidade e extensibilidade

O que são web-services?

Page 5: Rest In Peace com JBOSS RESTEasy

• “Big” web-services

– JAX-WS (SOAP, WSDL)

• RESTFul web-services

– JAX-RS

Tipos de web-services

Page 6: Rest In Peace com JBOSS RESTEasy

@WebService

public class CadastraFuncionarioWS {

@WebMethod

public FuncionarioEntity cadastrar(@WebParam( name="pessoa")Pessoa pessoa) {

FuncionarioEntity funcionario = new FuncionarioEntity();

try {

funcionario.setNome(pessoa.getNome());

funcionario.setCpf(pessoa.getDocumento());

IAppDAO dao = AppPersistenciaLocator.getInstance().getDaoPadrao();

funcionario.setId(dao.inclui(funcionario));

dao.commit();

} catch (Exception e) {

...

}

return funcionario;

}

}

JAX-WS

Page 7: Rest In Peace com JBOSS RESTEasy

Cliente Servidor

JAX-WS runtime JAX-WS runtimeMensagem SOAP

Troca de mensagens JAX-WS

Page 8: Rest In Peace com JBOSS RESTEasy

• Representational State Transfer

– Estilo de arquitetura onde os dados e as funcionalidades são considerados recursos quepor sua vez são acessados via URIs (links)

O que é REST?

Page 9: Rest In Peace com JBOSS RESTEasy

• Representational State Transfer

O que é REST?

Operação Método HTTP

Create POST

Read GET

Update PUT

Delete DELETE

Page 10: Rest In Peace com JBOSS RESTEasy

@Path("/plc")

public class PlcBaseRest {

private IPlcFacade iFacadePlc;

@GET

@Path("/listaac/{useCase}/{propriedade}")

@Produces("text/plain; charset=ISO-8859-1")

public String recuperaLista(@PathParam("useCase") String useCase,

@PathParam("propriedade") String propriedade,

@QueryParam("q") String q,

@QueryParam("limit") @DefaultValue("10") int limit)

throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {

List<PlcBaseVO> lista = null;

try {

IPlcFacade facade = getServiceFacade();

(...)

lista = recuperaLista(propriedade, q, limit, facade, context, classe);

} catch (PlcException e) {

(...)

}

return PlcRendererHelper.getInstance().montaSaidaXMLPipe(lista, propriedade);

}

}

JAX-RS

Page 11: Rest In Peace com JBOSS RESTEasy

Cliente Servidor

Cliente HTTP Servidor HTTPMensagem

“Plana”

Troca de mensagens JAX-RS

Page 12: Rest In Peace com JBOSS RESTEasy

• Arquitetura simples, leve, escalável, com altaperformance e pronta!

• Sem a complexidade dos web-services tradicionais (WS-*)

• Mais integrados do que web-services quefazem uso de SOAP

Vantagens da arquitetura REST

Page 13: Rest In Peace com JBOSS RESTEasy

Web-Oriented Architecture

Page 14: Rest In Peace com JBOSS RESTEasy

• Quando não precisar manter o estado(stateless)

• Estrutura de caching para performance

• Produtor e consumidor no mesmo contexto

Quando usar REST?

Page 15: Rest In Peace com JBOSS RESTEasy

• Pouca largura de banda ou dispositivos com capacidade de processamento menor

• Fácil configuração para sites já existentes

Quando usar REST?

Page 16: Rest In Peace com JBOSS RESTEasy

• JSR 311 – Java API for RESTful Web Services

• http://jsr311.dev.java.net/

• Implementação de referência: Jersey (SUN)

• Outras implementações:– JBOSS RESTEasy– Apache CXF– Restlet– Spring 3.0

Outras informações…

Page 17: Rest In Peace com JBOSS RESTEasy

• A partir de uma classe qualquer…

public class MeuPrimeiroRest {

public String recuperaNomeEvento() {

return “Java Day”;

}

}

Hands on!

Page 18: Rest In Peace com JBOSS RESTEasy

• Adicione uma anotação @Path:

@Path(“/servicos”)

public class MeuPrimeiroRest {

public String recuperaNomeEvento() {

return “Java Day”;

}

}

Hands on!

Page 19: Rest In Peace com JBOSS RESTEasy

• Adicione o método HTTP a ser utilizado:

@Path(“/servicos”)

public class MeuPrimeiroRest {

@GET

@Path(“/recuperaNome”)

public String recuperaNomeEvento() {

return “Java Day”;

}

}

Hands on!

Page 20: Rest In Peace com JBOSS RESTEasy

• Outros exemplos

– recuperando informações do banco de dados

– utilizando outros métodos HTTP (via RESTClient)

Hands on!

Page 21: Rest In Peace com JBOSS RESTEasy

@HEAD

@QueryParam

@Consumes

@Produces

@Provider

Para exercitar depois…

Page 22: Rest In Peace com JBOSS RESTEasy

Dúvidas…

Page 23: Rest In Peace com JBOSS RESTEasy

Referências

R. Fielding. Architectural Styles and the Design of Network-based Software Architectures. Ph.d dissertation, University of California, Irvine, 2000. http://roy.gbiv.com/pubs/dissertation/top.htm

REST Wiki. Web site.http://rest.blueoxen.net/cgi-bin/wiki.pl

Representational State Transfer. Web site, Wikipedia.http://en.wikipedia.org/wiki/Representational_State_Transfer