Escolar Documentos
Profissional Documentos
Cultura Documentos
OA2
Enterprise Java Beans (EJB)
OA3
Perguntas e Respostas
Globalcode Open4education
Globalcode Open4education
Objetivo
Apresentar 3 opes modernas de arquitetura para aplicaes JEE
Palestrantes
Rodrigo Cndido
Entusiasta de tecnologias EE SCJP, SCEA, SCWCD AJ, AW, CJ, CW
Vinny Nunes
Ps OO, Cincias da Computao e Tcnico em Processamento Java para web desde 1999 Entusiasta de tecnologias de apresentao SCJP, SCJA, SCWCD AJ, AW, CJ, CW
Globalcode Open4education
Globalcode Open4education
Motivao
Simplificar o desenvolvimento:
Usando menos padres de projetos Usando os recursos do Java 5, em especial anotaes e genricos Usando as especificaes JCP nas suas verses mais recentes Usando novos padres como IoC e DI
Negcio e Integrao
EJB 2 ? EJB 3 ? Spring ? JPA? Com Hibernate? Com TopLink? Outro? Qual? JBoss? Glassfish? Tomcat? Jetty? WebSphere? Outros?
Globalcode Open4education
Globalcode Open4education
Ferramentas utilizadas
eclipse 3.x CPL, EPL (http://www.eclipse.org/)
+ jboss tools 3.x (http://www.jboss.org/tools)
Agenda
Objetivo / Motivao Estudo de Caso Java Persistence API (JPA) JavaServer Faces (JSF) Enterprise Java Beans (EJB) Injeo de Dependncia (DI) Perguntas e Respostas
OA2
. 1.0 . Hibernate
OA3
. 1.0 . Hibernate
3.0
Sim
Globalcode Open4education
Globalcode Open4education
Entidades
Pode ser utilizado fora de containeres EJBs (ligthweigth container) Uso de injeo de dependncia ao invs de lookups JNDI
Globalcode Open4education Globalcode Open4education
Globalcode Open4education
Globalcode Open4education
EntityManager
PersistenceContext
obj5
NEW / DETACHED
obj1
MANAGED
obj2
MANAGED
obj3
MANAGED
obj4
MANAGED
Globalcode Open4education
Globalcode Open4education
Globalcode Open4education
Globalcode Open4education
Agenda
Objetivo / Motivao Estudo de Caso Java Persistence API (JPA) JavaServer Faces (JSF) Enterprise Java Beans (EJB) Injeo de Dependncia (DI) Perguntas e Respostas
netbeans 6.x
opcional
Globalcode Open4education
Globalcode Open4education
JSF: o que ?
Java Server Faces Framework MVC proposto em 2001 JSR 127 (1.0 e 1.1, 2001), JSR 252 (1.2, 2004), JSR 314 (2.0,2007) Padronizou o desenvolvimento de interface de usurio web Definido por grupo de especialistas composto de empresas e pessoas fsicas Suportado pelos containers homologados para JEE 5 ou superior Baseado na tecnologia Servlets Ed Burns, Roger Kitain - Sun
http://java.sun.com/javaee/javaserverfaces/
Globalcode Open4education
Globalcode Open4education
JSF e J2EE
javax.faces
Controller Servlet
Globalcode Open4education
Globalcode Open4education
Managed Bean
faces-config.xml
netbeans 6.x
Globalcode Open4education
Globalcode Open4education
JSF: exemplos
Lista de artigos publicados
eclipse 3.x
Facelets: o que ?
JSF View Definition Framework Proposto em 2005 Tecnologia focada na criao de rvores de componente JSF VDL alternativa Subprojeto do JSF Jacob Hookom - Sun
https://facelets.dev.java.net/
Globalcode Open4education
Globalcode Open4education
Globalcode Open4education
Globalcode Open4education
Globalcode Open4education
template
cliente
Globalcode Open4education
jsf-facelets.jar (1.x)
pom.xml:
<dependency> <groupId>com.sun.facelets</groupId> <artifactId>jsf-facelets</artifactId> <version>${facelets.version}</version> </dependency> ...
Globalcode Open4education
Globalcode Open4education
Globalcode Open4education
Globalcode Open4education
10
Facelets: exemplos
eclipse 3.x
Globalcode Open4education
Globalcode Open4education
Richfaces: o que ?
Biblioteca de componentes Criada pela Exadel em 2006 Mantida pela Jboss desde 2007 ltima verso estvel: 3.3.1 em 18/04/2009 Alexander Smirnov Exadel Max Katz Exadel http://www.jboss.org/richfaces
Globalcode Open4education
11
Cliente
Globalcode Open4education
Globalcode Open4education
12
Globalcode Open4education
Richfaces: exemplos
eclipse 3.x
Lista de artigos publicados com data e categoria. Filtro, ordenao, panel. netbeans 6.x
Globalcode Open4education
Globalcode Open4education
13
OA1
Demonstrao
# OA1 JSF++ . 1.2 . Facelets . Richfaces . 1.2 . Facelets . Richfaces . 1.2 . Facelets . Richfaces JPA . 1.0 . Hibernate Padres eclipse 3.x EJB DI/IoC Containers Tomcat Jetty ... JBoss Glassfish WebSphere ... JBoss Glassfish WebSphere ...
OA1
Vantagens
Basta um servidor EE com suporte a servlets Mais rpido para codificar e para testar Mais fcil para aprender
OA2
. 1.0 . Hibernate
Desvantagens
Acesso de clientes desktop no to prtico Arquivo de expedio monoltico (.war) Poucas facilidades de integrao com outras tecnologias EE
OA3
. 1.0 . Hibernate
3.0
Sim
Globalcode Open4education
Globalcode Open4education
Agenda
Objetivo / Motivao Estudo de Caso Java Persistence API (JPA) JavaServer Faces (JSF) Enterprise Java Beans (EJB) Injeo de Dependncia (DI) Perguntas e Respostas
Globalcode Open4education
Globalcode Open4education
14
Segurana
Controle Transacional
Data Sources
Globalcode Open4education
Globalcode Open4education
Session Bean
Representa um processo de negcio (regra de negcio); Pode ser do tipo Stateless ou Stateful; Stateless
No mantm estado de converso com o cliente; No tem compromisso de manter uma sesso; No devemos utilizar atributos de negcio, somente atributos tcnicos em cache; um EJB econmico;
Message-Driven Bean
Trabalha de forma assncrona
Entity Bean
Representa um objeto persistente Definido pela especificao JPA
Stateful
Mantm estado de converso com o cliente; Cada cliente ter uma instancia do EJB exclusiva, desde a criao at a remoo; Podemos ter atributos de negcio com mtodos getters e setters;
Globalcode Open4education Globalcode Open4education
15
Session Bean
Stateless (sem estado)
Session Bean
Stateful (com estado)
Globalcode Open4education
Globalcode Open4education
Session Bean
Stateless (sem estado)
Session Bean
Clientes acessam o Session Bean atravs de uma interface Java simples (POJI); Mtodos (servios) so publicados atravs desta interface; A interface deve ser implementada pela classe do Bean; Tipos de Interfaces
Local (@Local)
Somente acesso local (mesma JVM); Cliente pode ser um componente Web ou outro EJB; Localizao no transparente (no suporta clusterizao).
Remota (@Remote)
Suporta acesso remoto (fora da JVM); Cliente pode ser um componente Web, outro EJB ou aplicao desktop; Transparncia de localizao (suporta clusterizao).
Globalcode Open4education
Globalcode Open4education
16
Session Bean
Local Interface
OA2
Demonstrao
# OA1 JSF++ . 1.2 . Facelets . Richfaces . 1.2 . Facelets . Richfaces . 1.2 . Facelets . Richfaces JPA . 1.0 . Hibernate . 1.0 . Hibernate . 1.0 . Hibernate eclipse 3.x Padres EJB DI/IoC Containers Tomcat Jetty ... JBoss Glassfish WebSphere ... JBoss Glassfish WebSphere ...
OA2
Remote Interface
OA3
3.0
Sim
Globalcode Open4education
Globalcode Open4education
OA2
Vantagens
Arquitetura mais robusta (melhor escalabilidade) Infra-estrutura do servidor EE Regras de negcio centralizadas Ampla diversidade de clientes (CORBA, RMI, etc)
Agenda
Objetivo / Motivao Estudo de Caso Java Persistence API (JPA) JavaServer Faces (JSF) Enterprise Java Beans (EJB) Injeo de Dependncia (DI) Perguntas e Respostas
Desvantagens
Maior custo operacional Maior complexidade na implementao Maior dificuldade de suporte e manuteo
Globalcode Open4education
Globalcode Open4education
17
Injeo de Dependncia
Mecanismo de injeo de recursos necessrios a um componente de forma automtica
Sem a presena de instrues explcitas para acessar o recurso
Injeo de Dependncia
Sem injeo de dependncia:
Cdigo fonte do componente A contm instrues para buscar o componente B e o recurso C.
Exemplo:
O componente de negcios A depende do componente de negcios B e do pool de conexes C.
Servio de Nomes ejb/componenteB jdbc/dataSourceC
lookups
B C
B C
Globalcode Open4education Globalcode Open4education
Injeo de Dependncia
Com injeo de dependncia
Cdigo do componente A no busca recursos e outros componentes Devemos declarar as dependncias de componentes e recursos nos atributos ou mtodos setters do componente A Container (Java EE) interpreta as dependncias declaradas no componente A e injeta os recursos e componentes necessrios
Injeo de Dependncia
class ComponenteA { @EJB(name=ejb/componenteB) InterfaceB b; @Resource(name=jdbc/dataSourceC) DataSource c; }
injeo
B C
Globalcode Open4education
Globalcode Open4education
18
Injeo de Dependncia
Quem pode receber injeo ?
EJB, Interceptor Servlet, Filter, *Listener, JSP Tag Handler JSF Managed Beans Endpoints JAX-WS e Handlers
Injeo de Dependncia
Exemplo de Utilizao
Globalcode Open4education
Globalcode Open4education
OA3
Demonstrao
# OA1 JSF++ . 1.2 . Facelets . Richfaces . 1.2 . Facelets . Richfaces . 1.2 . Facelets . Richfaces JPA . 1.0 . Hibernate . 1.0 . Hibernate . 1.0 . Hibernate eclipse 3.x
OA3
Vantagens
EJB DI/IoC Containers Tomcat Jetty ... JBoss Glassfish WebSphere ... JBoss Glassfish WebSphere ...
Padres
OA2
Configurao facilitada Diminuio na quantidade de padres de projeto utilizados na aplicao Maior produtividade Facilidade de manuteo
Desvantagens
Suporte incompleto IoC (ser corrigido no Java EE 6) Incompatibiliade para escalabilidade Somente para aplicaes Java EE
Globalcode Open4education
OA3
3.0
Sim
Globalcode Open4education
19
EJB
+ JMS + JTA + WS + JNDI + JAAS
JME
+ Cosmo + Floggy
Globalcode Open4education
Globalcode Open4education
Perguntas e Respostas
Codificar Login programtico Usar componente de menu Usar componente para Drag and drop Usar componentes de calendrio e numrico
?
Globalcode Open4education Globalcode Open4education
20
Globalcode Open4education
21