2. Agenda
Java Enterprise Edition (Java EE)
Java Persistence API (JPA)
Enterprise JavaBeans (EJB)
JavaServer Faces (JSF)
Contexts and Dependency Injection (CDI)
Demonstração
Novidades Java EE 7
Perguntas e Respostas
3. Plataforma Java
A plataforma é dividida em três partes:
Java Standard Edition (Java SE)
Base do Java que contém as principais APIs
Java Enterprise Editon (Java EE)
Versão de Java para desenvolvimento de aplicações Web e
enterprise que rodam em servidores padronizados
Java Micro Edition (Java ME)
Redução da plataforma Standard para dispositivos móveis como
PDA e celulares
4. Java Enterprise Edition
Suporte ao desenvolvimento de aplicações
“enterprise”
Aplicações distribuídas, seguras, escaláveis, de alta
disponibilidade e com baixo custo de manutenção
Plataforma para desenvolvimento de software de
pequeno, médio e grande porte em múltiplas
camadas de componentes
Componentes “rodam” em um servidor Java EE
7. Java Enterprise Edition
Serviços oferecidos pelos containeres Java EE:
Gestão de memória, ciclo de vida de objetos
Conexões, Transações, Serviço de nomes
Segurança
Tolerância a falhas
Integração
WebServices
Clustering
Alta disponibilidade
Confiabilidade...
11. Java Persistence API
Primeira especificação (padrão) de mapeamento de objetos
Java para base de dados relacional
Integração com outros frameworks
Hibernate é uma implementação de JPA
TopLink Essencials é uma implementação de JPA (RI)
POJO (Plain Old Java Objects) Entidades
Mapeamento via metadados (annotation Java 5)
Pode ser utilizado fora de containeres EJBs (ligthweigth
container)
Uso de injeção de dependência ao invés de lookups JNDI
17. Enterprise Java Beans
Plataforma para criação de aplicações de negócio
portáveis, robustas e reutilizáveis usando a linguagem de
programação Java;
Componente para construir aplicações sem precisar
reinventar uma série de recursos e serviços (transações,
segurança, persistência);
Modelo de alto nível para objetos distribuídos (computação
distribuída);
Pode ser utilizado em soluções Web e não Web;
18. Enterprise Java Beans
EJB
Session Bean
Java Web
Swing
Cliente WS
Web Browser
JVM + Container EE
Rede Local
Componentes Negócio Compartilhados
19. Enterprise Java Beans
EJB
Session Bean
Segurança
ControleTransacional
Escalabilidade
Queues
Topics
Data
Sources
Environment
Entries
EJB
Infra Estrutura do
Container
20. Tipos de EJB:
Session Bean
Representa um processo de negócio
Message-Driven Bean
Trabalha de forma assíncrona
Singleton Bean
EJB introduzido na versão 3.1
Entity Bean
Representa um objeto persistente
Definido pela especificação JPA
Enterprise Java Beans
21. Representa um processo de negócio (regra de negócio);
@Stateless
Não mantém estado de conversão com o cliente;
Não tem compromisso de manter uma sessão;
Não devemos utilizar atributos de negócio, somente atributos técnicos
em cache;
É um EJB econômico;
@Stateful
Mantém estado de conversão com o cliente;
Cada cliente terá uma instancia do EJB exclusiva, desde a criação até a
remoção;
Podemos ter atributos de negócio com métodos getters e setters;
Session Bean
22. Session Bean
Podem ou não definir interface de acesso
@LocalBean define EJBs sem interfaces
Tipos de Interfaces
Local (@Local)
Somente acesso local (mesma JVM);
Cliente pode ser um componente Web ou outro EJB;
Localização não é transparente (não suporta clusterização).
Remota (@Remote)
Suporta acesso remoto (fora da JVM);
Cliente pode ser um componente Web, outro EJB ou aplicação desktop;
Transparência de localização (suporta clusterização).
23. • EJB Lite
Sub-conjunto de funcionalidades direcionadas para deploy dos EJBs no
container Java EE Web Profile (.war)
Enterprise Java Beans
EJB Lite EJB Full
• Local Session Beans
• CMT / BMT
• Segurança Declarativa
• Interceptors
• Message-Driven Beans (MDB)
• Web Service Endpoints
• 2.x / 3.x Remove View
• Inter-operabilidade com RMI-IIOP
• Timer service
• Chamada assíncrona à metodos
• 2.x Local View
• CMP / BMP Entity Beans
24. Enterprise Java Beans
Empacotamento Simplificado
Possibilita o deploy de componentes EJBs através de um .war
Somente disponível para os EJB Lite
ejb-jar.xml não é mais necessário
Java EE 5
Java EE 6
26. Message-Driven Bean
Existem dois tipos de destinos JMS
Point-to-point (queue): uma mensagem enviada para a fila será
consumida apenas por um cliente;
Publish-subscriber (topic): uma mensagem pode ser recepcionada por
múltiplos clientes;
29. MVC - Dividir e conquistar
Beleza vs Funcionamento
Código Organizado
Manutenção Fácil
Sabe aonde achar o erro
30. Principais Componentes
J2EE Web Container J2EE EJB
Container
Controller ModelView
Servlet JavaBeansJava
Server
Pages
Custom
Tag
EJB
javax.faces
JSF e J2EE
31. Página JSF
Tags: JSF HTML
Tags: JSF Core
Request
Managed
Bean
Session
Managed
Bean
Application
Managed
Bean
Expression Language: EL
Links, formulários, imagens,
combo-box, tabelas, etc…
Através destas tags adicionamos
validação, conversão de dados,
listeners
Dados para popular as tabelas,
combo-box, textos.
Páginas JSF
37. CDI (JSR-299)
• CDI = Context Dependency Injection
• Novo modelo para gerenciamento de beans e
injeção de dependência
• Nova definição para escopos de aplicação
• Também conhecido como “Web Beans”
• Integra as camadas web e negócio da aplicação
Facilita a implementação das aplicações que utilizam
tecnologias como JSF e EJB (Java EE)
38. CDI (JSR-299)
• Gerenciamento de ciclo de vida de componentes
statefull
• Provê um mecanismo de DI typesafe
• Disponibiliza mecanismo de eventos facilitando o
desenvolvimento com baixo acoplamento
• Tem um mecanismo de Interceptors e Decorators
• Possibilita a criação de extensões portáveis para
qualquer implementação
• Integração com EL
40. CDI Managed Beans
•Nova definição para
“beans
•Instâncias são
gerenciadas pelo
container
•Serviços disponíveis
Injeção de Dependência
Ciclo de vida
Interceptors
Events
Comentar sobre a história do surgimento do JPA (como por exemplo a contribuição do Hibernate e do Gavin King para esta especificação) Falar sobre os benefícios na utilização de JPA em uma aplicação que necessita de persistência como (aumento da produtividade, diminuição da complexidade, ganho de performance, etc)
Comentar sobre o modelo da arquitetura do JPA, que possui uma similaridade com o modelo JDBC, composto por uma API de interfaces e pelos JPA providers (Hibernate, EclipseLink, Castor, etc)
Comentar sobre a facilidade de implementação do JPA utilizando anotações, simplificando muito o mapeamento das entidades e também utilizando-se do conceito de “defaults” amplamente utilizado pelo Java EE 5. Demonstrar o exemplo de um JavaBean mapeado comentando sobre algumas anotações principais (@Entity, @Table, @Id, @Column)
Comentar sobre o conceito do objeto EntityManager dentro do JPA, responsável pela publicação dos métodos de persistência (find, persist, merge, remove) e também pelo gerenciamento dos Entity JavaBeans;
* Demonstrar o exemplo de configuração do JPA, definindo as configurações do PersistenceContext e também do provider específico.
* Comentar sobre o conceito dos componentes EJBs, como sua definição, sua necessidade de implementação, etc
* Comentar sobre
Comentar sobre os três tipos de componentes EJBs (Session, MDB e Entity) Retificar que o componente Entity foi separado da especificação original dos EJBs, originando assim a especificação JPA