A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Globalcode – Open4Education 1 EJB3 Interceptors Ricardo Limonta.

Apresentações semelhantes


Apresentação em tema: "Globalcode – Open4Education 1 EJB3 Interceptors Ricardo Limonta."— Transcrição da apresentação:

1 Globalcode – Open4Education 1 EJB3 Interceptors Ricardo Limonta

2 Globalcode – Open4Education 2 Agenda Introdução Conceitos de AOP Implementando Interceptors Exemplos Melhores Práticas Novidades na versão 3.1 Perguntas & Comentários

3 Globalcode – Open4Education 3 Palestrante Ricardo Limonta Arquiteto JEE / Instrutor Java VOffice 12 anos na área de sistemas, atuando em projetos nacionais e offshore, médio e grande portes; Certificações: SCJP 5 / SCEA. Hobby Favorito: Surf

4 Globalcode – Open4Education 4 Introdução Recurso introduzido na versão EJB 3.0; Utiliza o recurso AOP (Aspect-oriented programming). Permite a criação de métodos que interceptam a chamada a métodos de negócio e eventos de ciclo de vida dos beans; Podem ser configurados em beans de sessão e beans baseados em mensagens.

5 Globalcode – Open4Education 5 Conceitos de AOP Aspect-Orientation Programming: É um paradigma de programação que permite uma separação de código orientada à importância (separation of concerns). Conceito criado por Gregor Kiczales e sua equipe da Xerox. O Intuito principal na utilização de AOP é separar claramente a responsabilidade dos objetos e diminuir massivamente a quantidade de funcionalidades secundárias repetitivas.

6 Globalcode – Open4Education 6 Conceitos de AOP PedidoBean pedido: Pedido Insert() update() delete() log() Pedido numero: String data: Date valor: Double

7 Globalcode – Open4Education 7 Conceitos de AOP PedidoBean pedido: Pedido Insert() update() delete() Pedido numero: String data: Date valor: Double Logger log()

8 Globalcode – Open4Education 8 Conceitos de AOP PedidoBean pedido: Pedido Insert() update() delete() Logger log() Combinação

9 Globalcode – Open4Education 9 Conceitos de AOP Cenário: 1.Um componente deve ser capaz de incluir pedidos; 2.Deve existir uma aprovação sobre o valor do pedido em relação ao perfil do usuário logado no sistema; 3.Deve existir um log de transação, as informações de usuário, ação executada e tempo de execução devem ser gravados;

10 Globalcode – Open4Education 10 Conceitos de AOP public Pedido insert(Pedido pedido) throws BusinessException { long startTime = System.currentTimeMillis(); try{ //verifica se o usuário tem perfil para aprovação de pedidos. if ((pedido.getValor() > 10000.0d) && (! principal.getName().equals("supervisor"))){ throw new BusinessException("O usuário não tem permissão..."); } //implementa as regras de negócio… save(pedido); } catch (Exception e) { throw new BusinessException(e); } finally { long endTime = System.currentTimeMillis() - startTime; System.out.println("insert() - " + endTime + " - " + principal.getName()); } return pedido; }

11 Globalcode – Open4Education 11 Conceitos de AOP @Interceptors(LogInterceptor.class) public Pedido insert(Pedido pedido) throws BusinessException { //verifica se o usuário tem perfil para aprovação de pedidos. if ((pedido.getValor() > 10000.0d) && (! principal.getName().equals("supervisor"))){ throw new BusinessException("O usuário não tem permissão..."); } //implementa as regras de negócio… save(pedido); return pedido; }

12 Globalcode – Open4Education 12 Conceitos de AOP @Interceptors(values={LogInterceptor.class, PedidoAlcadaInterceptor.class}) public Pedido insert(Pedido pedido) throws BusinessException { //implementa as regras de negócio… save(pedido); return pedido; }

13 Globalcode – Open4Education 13 Interceptors São objetos capazes de interceptar chamadas a métodos de negócio ou eventos de ciclo de vida dos beans; “Rodam” na mesma pilha de processamento do bean, no mesmo contexto de transação e segurança, do método requisitado. Acesso a todos recursos do container JEE (@…); Funcionam como uma extensão do EJB.

14 Globalcode – Open4Education 14 Interceptors @AroundInvoke public Object (InvocationContext invocation) throws Exception { … } Interceptador para de métodos de negócio…

15 Globalcode – Open4Education 15 Interceptors public class LogInterceptor { @AroundInvoke public Object logger(InvocationContext invocation) throws Exception { long startTime = System.currentTimeMillis(); try { return invocation.proceed(); } finally { long endTime = System.currentTimeMillis() - startTime; System.out.println("Method: " + invocation.getMethod().getName() + " - " + "Values: " + invocation.getParameters()[0] + " - " + "Time: " + endTime + " - " + "User: " + ctx.getCallerPrincipal().getName()); } Exemplo: LogInterceptor.java

16 Globalcode – Open4Education 16 Interceptors @ public void (InvocationContext invocation) { … } Interceptando eventos dos beans… Exemplo: @PostConstruct public void (InvocationContext invocation) { … }

17 Globalcode – Open4Education 17 Interceptors InvocationContext: Contém as informações do objeto interceptado. Principais métodos: MétodoDescrição Object getTarget()Retorna a referência do EJB Method getMethod()Retorna um objeto que faz referência ao método invocado Object[] getParameters()Lista de parâmetros do método Map getContextData()Mapa de objetos que percorre todo o ciclo de invocação do método Object proceed()Invoca o interceptor seguinte ou o método de negócio do bean

18 Globalcode – Open4Education 18 Interceptors Client PedidoBean Insert(pedido) Chamada a um bean sem interceptor…

19 Globalcode – Open4Education 19 Combinação Interceptors Client PedidoBean Interceptor A Interceptor B Interceptor C Insert(pedido) Chamada a um bean com interceptors…

20 Globalcode – Open4Education 20 Exemplos Show Demo…

21 Globalcode – Open4Education 21 Melhores Práticas - Procure sempre identificar necessidades genéricas que se faça necessário o uso de interceptors. Logs, Handlers, Validadores, etc. - Crie interceptors com baixa complexidade; - Documentação é tudo !

22 Globalcode – Open4Education 22 Novidades @Interceptors(LogInterceptor.class) public @Interface Auditoria{} @Auditoria public void delete(Long idPedido) { … } Definir sua própria anotação de interceptors… Forma de uso:

23 Globalcode – Open4Education 23 Perguntas & Comentários ?


Carregar ppt "Globalcode – Open4Education 1 EJB3 Interceptors Ricardo Limonta."

Apresentações semelhantes


Anúncios Google