Introdução à J2EE
Conceitos da arquitetura
Ricardo Cavalcanti
roc3@cin.ufpe.br
Jobson Ronan
jrjs@cin.ufpe.br
Visão geral
EJB é um padrão baseado em
componentes server-side que
simplifica o processo de construir
aplicações distribuídas em Java.
 Suporta portabilidade e
reusabilidade num middleware de
qualquer fabricante.

2
Motivação

Vamos construir um grande sistema,
com o que precisamos nos
preocupar?
Balanceamento de carga
 Transações
 Tolerância a falhas
 Gerenciamento de sistemas
 Message-driven middleware
 ...

3
Arquitetura baseada em
componentes

Utilizar os serviços de cada
componente, independentemente.


Não preciso implementar controle de
transações, compro o componente que
faz isso.
Problema: padrões precisam ser
seguidos
4
Sistemas de objetos distribuídos


O Stub representa o
objeto remoto para o
cliente
O skeleton representa
o cliente para o objeto
remoto
Cliente
Objeto Remoto
Interface Remota
Stub
Skeleton
Rede
5
Middleware explícito
Transaction
Service

É necessário
implementar cada
utilização em cada
método
Cliente
Objeto
Remoto
Security
Service
Database
Service
Stub
Skeleton
Rede
public void transferir(Conta origem, Conta destino, double valor){
//Chama a API para verificar segurança
//Chama a API para iniciar a transação
//Chama a API para carregar dados do banco
//Subtrair o valor da conta origem e somar no destino
//Chama a API para guardar dados no banco
//Chama a API para fechar a transação
}
6
Middleware implícito
Objeto
Remoto
Cliente



Apenas a lógica de
negócio
Os serviços são
declarados em um
outro arquivo
Stub
Uma ferramenta vai
gerar seu interceptador
baseado no seu arquivo
descritor
Transaction
Service
Interceptador
de requisições
Security
Service
Database
Service
Skeleton
Rede
public void transferir(Conta origem, Conta destino, double valor){
//Subtrair o valor da conta origem e somar no destino
}
7
Introduzindo os EJBs
Padrão baseado em componentes
 Define os contratos entre
componentes e servidores de
aplicações


Qualquer enterprise bean pode ser
importado e carregado em qualquer
servidor
8
Conseqüências
Padrão entre a indústria
 Portabilidade
 Desenvolvimento rápido

9
EJB x JavaBeans
Conceitos distintos, ambos parte de
uma arquitetura de componentes
 EJB são componentes compostos de
classes, interfaces e documentos
XML de configuração, para implantar
automaticamente num servidor
 Javabeans são classes com
construtor sem argumentos e
métodos getX () e setX().

10
Java 2 Enterprise Edition
Uma especificação para servidores
de aplicação e componentes
 Um conjunto de interfaces, para os
servidores e seus componentes
poderem conversarem
 Seu objetivo é reduzir o custo e a
complexidade do desenvolvimento de
serviços multicamada

11
Servidores de Aplicação
Responsáveis pela infra-estrutura
 Oferecem:

Suporte à arquitetura de componentes
EJB
 Suporte a serviços Web, servlets e JSP
 Suporte a serviços de middleware
explícito e implícito


Utilizaremos o JBoss-AS
12
Conteiners J2EE




Um container é a interface entre o
componente e as funções de baixo nível
da plataforma onde roda
Provê um ambiente para um enterprise
bean rodar.
Gerenciam os EJBs chamando métodos
obrigatórios de gerenciamento
É uma entidade abstrata, ninguém invoca
explicitamente o container
13
Serviços

Configuráveis
Segurança
 Transações
 Nomes (JNDI lookup)
 Conectividade remota


Não configuráveis
Persistência
 Ciclo de vida de beans

14
Segurança
Autenticação e Autorização
 API JAAS - Java Authentication and
Authorization Service
 Autenticação depende da
implementação do servidor
 Controle de acesso é definido
declarativamente

15
Transações
Gerenciadas pelo container ou pelo
bean
 Suporte a transações distribuídas


Vários servidores e vários bancos de
dados
16
Nomes
Através da API JNDI
 Associar um nome a recursos
computacionais como

endereços de memória, de rede, de
serviços
 objetos e referências

17
Conectividade remota

O modelo de conectividade permite
ao cliente invocar métodos como se
estivesse na mesma máquina virtual
do servidor
18
Persistência
Mesmo não configurável, permite
sobrescrever o gerenciamento pelo
container (CMP) para obter mais
controle
 Sincronização de dados, pesquisa e
remoção

19
Arquitetura em camadas
Browser
Aplicações
CORBA
Aplicativo
Java
Cliente de
Web service
Servidor
J2EE
Páginas
HTML e
applets
Camada WEB
Camada de Negócios
Camada de Dados
20
Componentes na camada de
negócio

Podem ser EJbs!
Formam o núcleo de uma aplicação
distribuída
 Processam as requisições do cliente
 Processam os dados provenientes da
camada de dados

EJBs são objetos CORBA
 EJbs são sempre escritos em java

21
Tipos de EJB

Session Beans




Entity Beans





Modelam processos de negócio.
Podem manter ou não estado não-persistente
Debitar, creditar...
Modelam dados de negócio.
Representam informações em bancos de dados
Mantêm estado persistente
Uma conta, um cliente
Message-driven beans



Modelam processos assíncronos. Respondem a eventos.
Agem somente quando recebem uma mensagem
Não mantêm estado
22
Exemplo clássico
Cliente
HTML
Cliente JMS
MOM
Cliente
WebService
Cliente
CORBA
Message-driven
bean
Entity bean
Cliente
Swing
Session Bean
Entity bean
Entity bean
BD
Servlet
JSP
Taglib
Session Bean
Entity bean
23
Papéis
Quem faz o que em J2EE
Papéis

Provedor de componentes (bean provider)


Provedor de ferramentas (tool provider)



Desenvolvedor que cria os componentes J2EE
Oferecem ferramentas para facilitar a montagem e
manutenção das aplicações J2EE
Ferramentas de modelagem de dados, ferramentas de
montagem de componentes, etc.
Montador de aplicações (application assembler)


Arquiteto de aplicações que monta aplicações usando
componentes desenvolvidos pelo provedor de
componentes com as ferramentas do provedor de
ferramentas
Escreve código de integração entre componentes, lógica
de relacionamentos, etc.
25
Papéis

Provedor dos containers (container/server
provider)




Implantador de aplicações (deployer)



Fabricantes que oferecem containers EJB e Web
Garantem o ambiente de execução onde vivem os beans
e os serviços de middleware que eles têm acesso
JBoss, WebLogic, WebSphere, Tomcat (Web), IPlanet,
etc.
Instala e coloca para funcionar a aplicação no software
fornecido pelo provedor de containers
Garante a integração com sistemas e serviços, escolhe o
hardware, ajusta a segurança, performance, acesso a
serviços e recursos externos
Administrador do sistema (system administrator)

Garante a estabilidade da solução operacional
26
Por que a divisão em
papéis?


Poder de especialização
Pode combinar alguns papéis
Bean Provider
Application
Assembler
Implanta o sistema
System
Administrator
Deployer
27
Tool Provider
Container Provider
Download

j2ee_pcc_01_intro_J2EE