Você está na página 1de 27

Introdução à J2EE

Conceitos da arquitetura

Ricardo Cavalcanti Jobson Ronan


roc3@cin.ufpe.br 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 Cliente Objeto Remoto

 O skeleton representa
o cliente para o objeto
remoto Interface Remota

Stub Skeleton

Rede

5
Middleware explícito
Transaction
Service

 É necessário Cliente
Objeto
Security
Service
implementar cada Remoto

utilização em cada Database


Service

método 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
Cliente Remoto
 Apenas a lógica de
negócio Transaction
Service

 Os serviços são Interceptador Security


de requisições Service
declarados em um
outro arquivo Stub
Database
Service

 Uma ferramenta vai


Skeleton
gerar seu interceptador
baseado no seu arquivo Rede
descritor
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

Páginas
Aplicações Aplicativo Cliente de HTML e
CORBA Java Web service applets

Servidor
J2EE 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
 Modelam processos de negócio.
 Podem manter ou não estado não-persistente
 Debitar, creditar...
 Entity Beans
 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 Servlet
Cliente JMS
Cliente
WebService JSP

Cliente Cliente
MOM Taglib
CORBA Swing

Message-driven
Session Bean Session Bean
bean

Entity bean Entity bean Entity bean Entity bean

BD 23
Papéis

Quem faz o que em J2EE


Papéis
 Provedor de componentes (bean provider)
 Desenvolvedor que cria os componentes J2EE
 Provedor de ferramentas (tool provider)
 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)
 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.
 Implantador de aplicações (deployer)
 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
Implanta o sistema
Assembler

Deployer System
Administrator

27

Tool Provider Container Provider