Desenvolvendo uma Aplicação com Java EE
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
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
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
Java Enterprise Edition
Java Enterprise Edition
Containers Java EE
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...
Profiles
Profiles
JPAJava Persistence API
Java Persistence API
Primeira especificação (padrão) de mapeamento de objetos Java para base de dados relacional
Integração com outros frameworksHibernate é uma implementação de JPATopLink Essencials é uma implementação de JPA (RI)
POJO (Plain Old Java Objects) EntidadesMapeamento 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
Java Persistence API
JPA Entity
Java Persistence API
Java Persistence API
EntityManager (javax.persistence)
(B) find / query(C) persist(D) clear / serialização(E) merge (F) remove
Java Persistence API
Persistence Unit
EJBEnterprise JavaBeans
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;
Enterprise Java Beans
EJBSession Bean
Java Web
Swing
Cliente WS
Web Browser
JVM + Container EERede Local
Componentes Negócio Compartilhados
Enterprise Java Beans
EJBSession Bean
Se
gu
ran
ça
Co
ntr
ole
Tra
nsa
cio
na
l
Es
cala
bili
da
de
QueuesTopics
DataSources
Environment Entries
EJB
Infra Estrutura do Container
Tipos de EJB:Session Bean
Representa um processo de negócio
Message-Driven BeanTrabalha de forma assíncrona
Singleton BeanEJB introduzido na versão 3.1
Entity BeanRepresenta um objeto persistente
Definido pela especificação JPA
Enterprise Java Beans
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;
@StatefulManté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
Session Bean
Podem ou não definir interface de acesso
@LocalBean define EJBs sem interfaces
Tipos de InterfacesLocal (@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).
• 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
Enterprise Java Beans
Empacotamento SimplificadoPossibilita 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
Message-Driven Bean
EJB que é acionado de forma assíncrona;
Síncrono Assíncrono
Message-Driven BeanExistem 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;
JSFJavaServer Faces
JavaServer Faces
Java
Especificação
Integração
Ajax Nativo
MVC - Dividir e conquistar
Beleza vs Funcionamento
Código Organizado
Manutenção Fácil
Sabe aonde achar o erro
Principais ComponentesJ2EE Web Container J2EE EJB
Container
Controller ModelView
Servlet JavaBeansJavaServerPages
CustomTag
EJB
javax.faces
JSF e J2EE
Página JSF
Tags: JSF HTML
Tags: JSF Core
Request
ManagedBean
Session
ManagedBean
Application
ManagedBean
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
JSF: principais componentes
Pág
ina
JSF
face
s-co
nfi
g.x
ml
Man
aged
Bea
n
Facelets
Integração
Frameworks em JSF
• Basta baixar e usar
CDIContexts and Dependency Injection
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)
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
CDI no Java EE 6
CDI Managed Beans
•Nova definição para “beans•Instâncias são gerenciadas pelo container•Serviços disponíveis
Injeção de DependênciaCiclo de vidaInterceptorsEvents
CDI Managed Beans
Configuração CDI
Hello World
O que pode ser injetado
• CDI Managed Beans (POJO)• Objetos retornados por @Produces • EJB Session Bean (local ou remoto)• Java EE Resources (DataSource, JMS)• JTA UserTransaction• EntityManager (JPA)• Bean Validation Factory• Destination e ConnectionFactory JMS
Principais Recursos
Injection Points Qualifiers Alternatives EL Names Producer Methods Java EE Resources Scopes and Contexts Interceptors Stereotypes Events
Demonstração
Novidades Java EE 7
Java EE 7
• Por onde começar?
Perguntas e Respostas
?