1 / 23

EJB3 Interceptors

EJB3 Interceptors. Ricardo Limonta. Agenda. Introdu ção Conceitos de AOP Implementando Interceptors Exemplos Melhores Pr áticas Novidades na vers ão 3.1 Perguntas & Comentários. Palestrante. Ricardo Limonta Arquiteto JEE / Instrutor Java VOffice

annice
Download Presentation

EJB3 Interceptors

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. EJB3 Interceptors Ricardo Limonta

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

  3. Palestrante Ricardo LimontaArquiteto 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. 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. 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. Conceitos de AOP Pedido PedidoBean numero: Stringdata: Datevalor: Double pedido: Pedido Insert()update()delete()log()

  7. Conceitos de AOP Pedido PedidoBean numero: Stringdata: Datevalor: Double pedido: Pedido Insert()update()delete() Logger log()

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

  9. Conceitos de AOP Cenário: • Um componente deve ser capaz de incluir pedidos; • Deve existir uma aprovação sobre o valor do pedido em relação ao perfil do usuário logado no sistema; • 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. 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. 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. 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. 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. Interceptors Interceptador para de métodos de negócio… @AroundInvoke public Object <Name>(InvocationContext invocation) throws Exception { … }

  15. Interceptors Exemplo: LogInterceptor.java 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()); } } }

  16. Interceptors Interceptando eventos dos beans… @<Callback-Annotation> public void<Name>(InvocationContext invocation) { … } Exemplo: @PostConstructpublic void<Name>(InvocationContext invocation) { … }

  17. Interceptors InvocationContext:Contém as informações do objeto interceptado. Principais métodos:

  18. Interceptors PedidoBean Insert(pedido) Client Chamada a um bean sem interceptor…

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

  20. Exemplos Show Demo…

  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. Novidades Definir sua própria anotação de interceptors… @Interceptors(LogInterceptor.class) public @InterfaceAuditoria{} Forma de uso: @Auditoria public voiddelete(Long idPedido) { … }

  23. Perguntas & Comentários ?

More Related