Introdução à J2EE Conceitos da arquitetura Ricardo Cavalcanti [email protected] Jobson Ronan...
Transcript of Introdução à J2EE Conceitos da arquitetura Ricardo Cavalcanti [email protected] Jobson Ronan...
![Page 2: Introdução à J2EE Conceitos da arquitetura Ricardo Cavalcanti roc3@cin.ufpe.br Jobson Ronan jrjs@cin.ufpe.br.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc178497959413d8efea1/html5/thumbnails/2.jpg)
2
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.
![Page 3: Introdução à J2EE Conceitos da arquitetura Ricardo Cavalcanti roc3@cin.ufpe.br Jobson Ronan jrjs@cin.ufpe.br.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc178497959413d8efea1/html5/thumbnails/3.jpg)
3
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 ...
![Page 4: Introdução à J2EE Conceitos da arquitetura Ricardo Cavalcanti roc3@cin.ufpe.br Jobson Ronan jrjs@cin.ufpe.br.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc178497959413d8efea1/html5/thumbnails/4.jpg)
4
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
![Page 5: Introdução à J2EE Conceitos da arquitetura Ricardo Cavalcanti roc3@cin.ufpe.br Jobson Ronan jrjs@cin.ufpe.br.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc178497959413d8efea1/html5/thumbnails/5.jpg)
5
Sistemas de objetos distribuídos
O Stub representa o objeto remoto para o cliente
O skeleton representa o cliente para o objeto remoto
Cliente
Stub
Objeto Remoto
Skeleton
Rede
Interface Remota
![Page 6: Introdução à J2EE Conceitos da arquitetura Ricardo Cavalcanti roc3@cin.ufpe.br Jobson Ronan jrjs@cin.ufpe.br.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc178497959413d8efea1/html5/thumbnails/6.jpg)
6
Middleware explícito
É necessário implementar cada utilização em cada método
Cliente
Stub
ObjetoRemoto
Skeleton
Rede
Transaction Service
SecurityService
DatabaseService
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
}
![Page 7: Introdução à J2EE Conceitos da arquitetura Ricardo Cavalcanti roc3@cin.ufpe.br Jobson Ronan jrjs@cin.ufpe.br.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc178497959413d8efea1/html5/thumbnails/7.jpg)
7
Middleware implícito
Apenas a lógica de negócio
Os serviços são declarados em um outro arquivo
Uma ferramenta vai gerar seu interceptador baseado no seu arquivo descritor
Cliente
Stub
Interceptador de requisições
Skeleton
Rede
Transaction Service
SecurityService
DatabaseService
public void transferir(Conta origem, Conta destino, double valor){//Subtrair o valor da conta origem e somar no destino
}
ObjetoRemoto
![Page 8: Introdução à J2EE Conceitos da arquitetura Ricardo Cavalcanti roc3@cin.ufpe.br Jobson Ronan jrjs@cin.ufpe.br.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc178497959413d8efea1/html5/thumbnails/8.jpg)
8
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
![Page 9: Introdução à J2EE Conceitos da arquitetura Ricardo Cavalcanti roc3@cin.ufpe.br Jobson Ronan jrjs@cin.ufpe.br.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc178497959413d8efea1/html5/thumbnails/9.jpg)
9
Conseqüências
Padrão entre a indústria Portabilidade Desenvolvimento rápido
![Page 10: Introdução à J2EE Conceitos da arquitetura Ricardo Cavalcanti roc3@cin.ufpe.br Jobson Ronan jrjs@cin.ufpe.br.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc178497959413d8efea1/html5/thumbnails/10.jpg)
10
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().
![Page 11: Introdução à J2EE Conceitos da arquitetura Ricardo Cavalcanti roc3@cin.ufpe.br Jobson Ronan jrjs@cin.ufpe.br.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc178497959413d8efea1/html5/thumbnails/11.jpg)
11
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
![Page 12: Introdução à J2EE Conceitos da arquitetura Ricardo Cavalcanti roc3@cin.ufpe.br Jobson Ronan jrjs@cin.ufpe.br.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc178497959413d8efea1/html5/thumbnails/12.jpg)
12
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
![Page 13: Introdução à J2EE Conceitos da arquitetura Ricardo Cavalcanti roc3@cin.ufpe.br Jobson Ronan jrjs@cin.ufpe.br.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc178497959413d8efea1/html5/thumbnails/13.jpg)
13
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
![Page 14: Introdução à J2EE Conceitos da arquitetura Ricardo Cavalcanti roc3@cin.ufpe.br Jobson Ronan jrjs@cin.ufpe.br.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc178497959413d8efea1/html5/thumbnails/14.jpg)
14
Serviços
Configuráveis Segurança Transações Nomes (JNDI lookup) Conectividade remota
Não configuráveis Persistência Ciclo de vida de beans
![Page 15: Introdução à J2EE Conceitos da arquitetura Ricardo Cavalcanti roc3@cin.ufpe.br Jobson Ronan jrjs@cin.ufpe.br.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc178497959413d8efea1/html5/thumbnails/15.jpg)
15
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
![Page 16: Introdução à J2EE Conceitos da arquitetura Ricardo Cavalcanti roc3@cin.ufpe.br Jobson Ronan jrjs@cin.ufpe.br.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc178497959413d8efea1/html5/thumbnails/16.jpg)
16
Transações
Gerenciadas pelo container ou pelo bean
Suporte a transações distribuídas Vários servidores e vários bancos de
dados
![Page 17: Introdução à J2EE Conceitos da arquitetura Ricardo Cavalcanti roc3@cin.ufpe.br Jobson Ronan jrjs@cin.ufpe.br.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc178497959413d8efea1/html5/thumbnails/17.jpg)
17
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
![Page 18: Introdução à J2EE Conceitos da arquitetura Ricardo Cavalcanti roc3@cin.ufpe.br Jobson Ronan jrjs@cin.ufpe.br.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc178497959413d8efea1/html5/thumbnails/18.jpg)
18
Conectividade remota
O modelo de conectividade permite ao cliente invocar métodos como se estivesse na mesma máquina virtual do servidor
![Page 19: Introdução à J2EE Conceitos da arquitetura Ricardo Cavalcanti roc3@cin.ufpe.br Jobson Ronan jrjs@cin.ufpe.br.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc178497959413d8efea1/html5/thumbnails/19.jpg)
19
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
![Page 20: Introdução à J2EE Conceitos da arquitetura Ricardo Cavalcanti roc3@cin.ufpe.br Jobson Ronan jrjs@cin.ufpe.br.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc178497959413d8efea1/html5/thumbnails/20.jpg)
20
Arquitetura em camadas Browser
Cliente de Web service
Aplicativo Java
Aplicações CORBA
Páginas HTML e applets
Servidor J2EE Camada WEB
Camada de Negócios
Camada de Dados
![Page 21: Introdução à J2EE Conceitos da arquitetura Ricardo Cavalcanti roc3@cin.ufpe.br Jobson Ronan jrjs@cin.ufpe.br.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc178497959413d8efea1/html5/thumbnails/21.jpg)
21
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
![Page 22: Introdução à J2EE Conceitos da arquitetura Ricardo Cavalcanti roc3@cin.ufpe.br Jobson Ronan jrjs@cin.ufpe.br.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc178497959413d8efea1/html5/thumbnails/22.jpg)
22
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
![Page 23: Introdução à J2EE Conceitos da arquitetura Ricardo Cavalcanti roc3@cin.ufpe.br Jobson Ronan jrjs@cin.ufpe.br.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc178497959413d8efea1/html5/thumbnails/23.jpg)
23
Exemplo clássico
BD
Entity bean Entity bean Entity beanEntity bean
Message-driven bean
Session BeanSession Bean
Cliente JMS
MOMCliente CORBA
Cliente HTML
Cliente WebService
Servlet
JSP
TaglibCliente Swing
![Page 24: Introdução à J2EE Conceitos da arquitetura Ricardo Cavalcanti roc3@cin.ufpe.br Jobson Ronan jrjs@cin.ufpe.br.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc178497959413d8efea1/html5/thumbnails/24.jpg)
Papéis
Quem faz o que em J2EE
![Page 25: Introdução à J2EE Conceitos da arquitetura Ricardo Cavalcanti roc3@cin.ufpe.br Jobson Ronan jrjs@cin.ufpe.br.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc178497959413d8efea1/html5/thumbnails/25.jpg)
25
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.
![Page 26: Introdução à J2EE Conceitos da arquitetura Ricardo Cavalcanti roc3@cin.ufpe.br Jobson Ronan jrjs@cin.ufpe.br.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc178497959413d8efea1/html5/thumbnails/26.jpg)
26
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
![Page 27: Introdução à J2EE Conceitos da arquitetura Ricardo Cavalcanti roc3@cin.ufpe.br Jobson Ronan jrjs@cin.ufpe.br.](https://reader036.fdocument.pub/reader036/viewer/2022062307/552fc178497959413d8efea1/html5/thumbnails/27.jpg)
27
Por que a divisão em papéis?
Poder de especialização Pode combinar alguns papéis
Tool Provider
Bean Provider
Container Provider
Application Assembler
Deployer System Administrator
Forn
ece Fe
rramenta
s
Constrói EJBsMonta a aplicação
Fornece Servidor
Implanta o sistema