Вы находитесь на странице: 1из 56

Roteiro

1. Aplicaes Corporativas
2. Viso Geral da Arquitetura EJB
3. Camada de Persistncia (Beans de Entidade)
4. Componentes de controle (Beans de Sesso)
5. Troca de mensagens
6. Arquitetura integrada
7. Tpicos adicionais
8. Consideraes Finais
1. Aplicaes Corporativas
Aplicaes corporativas
Definio
Aplicaes que englobam todas as fases de
negcio de uma corporao, atravs da
integrao dos sistemas computadorizados
responsveis por cada atividade, com objetivo
de facilitar a coordenao do trabalho e
favorecer a cooperao dentro da empresa.
(Garner)
Aplicaes corporativas
Garantir que aplicao esteja sempre acessvel
Disponibilidade
Manter a qualidade do servio quando a carga aumentar
Escalabilidade
Assegurar a integridade e consistncia das transaes
Confiabilidade
Permitir acesso a alguns usurios e negar a outros
Segurana
Compartilhar dados com sistemas externos
Interoperabilidade
Deixar recursos disponveis a todos da corporao
Visibilidade
Corrigir falhas sem afetar outros componentes / sistemas
Manutenibilidade
Adicionar funcionalidade sem impactar numa existente
Extensibilidade
Assegurar que o sistema atende s caractersticas
Gerenciamento
Funcionar em variados hardwares e sistemas operacionais
Portabilidade
Caractersticas:
Aplicaes corporativas -
Caractersticas
Exemplo: Aplicao corporativa para
gerenciamento de contedos
Autenticao/autorizao de usurios
Pesquisa/Listagem de contedos
Criao/edio/remoo de contedos
Transferncia de contedos para outros servidores
Notificaes quando um contedo for alterado
Gerao de relatrios
Arquitetura de uma aplicao corporativa
para gerenciamento de contedos
Servidor 1
Camada de Viso
HTML
Arquivos
estticos
JSP
Servlet
Camada de Negcios
Contedo
JSF
Managed
Bean
Usuario
Gerenciador de
Contedos
Gerenciador de
Controle de Acesso
Servidor 2
Camada de Viso
HTML
Arquivos
estticos
JSP
Servlet
Camada de Negcios
Contedo
JSF
Managed
Bean
Usuario
Gerenciador de
Contedos
Gerenciador de
Controle de Acesso
2. Viso Geral da
arquitetura EJB
EJB 3 - Definio
Modelo de
componente padro
do lado do servidor
para aplicativos de
negcio distribudos;
(OReilly)
Modelo padro para construo de
componentes do lado servidor
Desenvolvimento de componentes que
representam processos do negcio
Possibilidade de combinao de
componentes distribudos
EJB 3 - Objetivos
Oferecer aos desenvolvedores gerenciamento
automtico de muitos dos servios essenciais
aplicaes coorporativas;
Possibilitar o acesso a partir de clientes em
vrias tecnologias, independente da
plataforma;
Ficar responsvel pelas atividades
burocrticas, garantindo que o desenvolvedor
mantenha o foco no negcio!

EJB 3 Arquitetura bsica


EJB 3 - Container
Responsvel por criar novas instncias dos
componentes, armazenando-as
adequadamente ;
Realiza muito trabalho nos bastidores:
Gerencia instncias de componentes, bem como a
segurana e a demarcao das transaes;
Gerencia o ciclo de vida dos componentes;
Responsvel pelo roteamento da solicitao para a
instncia real do componente.
3. Camada de Persistncia
Beans de Entidade
Beans de Entidade - Caractersticas
Contm o modelo do negcio
Mapeiam dados da base
Flexveis para qualquer banco de dados
relacional;
So agrupados em uma unidade de
persistncia;
To portveis que podem ser usados tambm
fora de um servidor de aplicao;

Beans de Entidade - Caractersticas
Espelham objetos do mundo real;
Possuem uma chave primria id(pode ser
uma classe ou um tipo primitivo);
No necessitam de nenhuma interface;
Gerenciados pelo EntityManager;
Anotaes de Entidade
@Entity: identifica uma entidade do modelo
de negcios
@Id: identifica a chave primria da entidade
@GeneratedValue: estratgia de gerao
automtica da chave primria
Tipos de gerao: strategy = {AUTO, IDENTITY,
SEQUENCE}
@Column: personaliza dados de uma coluna
length, name, nullable, unique, insertable,
updatable, ..

Anotaes de Relacionamento
@OneToOne: relacionamento 1 pra 1
@ManyToOne : relacionamento N pra 1
@OneToMany: relacionamento 1 pra N
Propriedade mappedBy=campo
@ManyToMany: relacionamento N pra N
Configuraes de carregamento:
fetchType {EAGER, LAZY}
Configuraes de cascata:
CASCADE {ALL, PERSIST, MERGE, REMOVE}
Anotaes de Herana
@Inheritance: deve estar presente na classe generalizada
Estratgias de gerao de tabelas:
SINGLE_TABLE: nica tabela mapeia todas as heranas;
grande quantidade de colunas vazias.
TABLE_PER_CLASS: uma tabela por classe; herda todos os
atributos; sem relaes; tabelas no-normalizadas.
JOINED: uma tabela por classe; contm apenas os
atributos especficos; normalizada; h relaes entre as
tabelas.
@DescriminatorValue(VALOR):
Deve estar presente na classe especializada
Identifica qual valor representar aquela entidade na
tabela generalizada.
Herana Estratgias de gerao
Unidade de Persistncia
Engloba todos os beans de entidade;
Deve estar associada a um banco de dados;
Todas as informaes esto descritas em um
arquivo chamado persistence.xml
Unidade de Persistncia
Arquivo persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence>
<persistence-unit name= teste >
<jta-data-source> java:/DefaultDS </jta-data-
source>
<properties>
<property name= "hibernate.hbm2ddl.auto"
value= "create-drop />
</properties>
</persistence-unit>
</persistence>

Entity Manager
Fornece uma API de consulta e mtodos de ciclo de
vida (adio, atualizao, remoo, etc) para a
entidade de maneira simples.
Pode ser utilizada atravs de injeo de
dependncia diretamente em classes EJB:

@PersistenceContext(unitName=meubanco)
Private EntityManager manager;

Operaes principais: persist, find, merge, remove,
createQuery, createNativeQuery

Transaes
O Entity Manager fornece suporte ao controle de
transaes (EntityTransaction).

Operaes principais: begin, commit, rollback, isActive;

Exemplo:

EntityTransaction transaction = entityManager.getTransaction():
transaction.begin();
try {
Conteudo conteudo = new Conteudo();
conteudo.setTitulo(Novo Conteudo);
entityManager.persist(conteudo);
conteudo.setDescricao(Descrio);
entityManager.merge(conteudo);
transaction.commit();
catch (Exception e) {
transaction.rollback();
}

Beans de Entidade - Exemplo
Modelo orientado a objetos:
Entidade Usurio
@Entity
public class Usuario {
@Id
@Column(name = "usuario_id")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(length=60,name="usuario_nome")
private String nome;
@Column(unique = true, nullable = false)
private String login;
@Column(unique = true, nullable = false)
private String senha;
@OneToMany(fetch=FetchType.EAGER, mappedBy=usuario)
private List<Conteudo> conteudos = new ArrayList<Conteudo>();
// getters and setters
}
Entidade Contedo

@Entity
@Inheritance(strategy =
InheritanceType.JOINED)
public class Conteudo {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(length=55,name="conteudo_titulo")
private String titulo;
private String descricao;
private String arquivo;
@ManyToOne(fetch=FetchType.EAGER)
private Usuario usuario = new Usuario();
// getters and settters
}

Entidade Vdeo
@Entity
@DiscriminatorValue(V)
public class Video extends Conteudo {
private Double duracao;
private Double razaoDeAspecto;
private String resolucao;

//getters and setters

}
Resultado no banco de dados
4. Beans de Sesso
Camada de negcios - controle
Beans de sesso
Contm a lgica do negcio
No representam dados do banco mas podem
ser usados para manipul-los
teis para descrever interaes entre outros
beans (fluxos de tarefas)
Podem ser acessados utilizando vrios
protocolos de objetos distribudos;
Suas atividades so geralmente
transitrias(no tem um estado persistente);

Beans de sesso VS Bean de Entidade
Beans de Entidade: atores
Beans de Sesso: roteiro da pea
Sem o roteiro, os atores no so nada; eles
poderiam representar alguma coisa, mas no
contar uma histria.
No faz sentido ter um monte de atores sem
existir interaes entre eles.

Beans de sesso
Sem informaes de estado:
Coleo de servios relacionados, cada um
representado por um mtodo;
No mantm nenhum estado entre uma e outra
invocao do mtodo;
Executa o mtodo e retorna o resultado sem
considerar as solicitaes que j foram feitas ou que
esto por vir.
Analogia: conjunto de programas em lote que
executam uma solicitao com base em alguns
parmetros que retornam um resultado.

Beans de sesso
Com informaes de estado:
Realiza tarefas em favor de um cliente e
mantm o estado relacionado a ele
Pode-se compartilhar dados de um cliente
entre todos os mtodos do bean.
Podem ter um perodo de tempo limite
Analogia: sesso personalizada em bancos on-line
Beans de sesso - Interfaces
Interfaces:
Um bean de sesso tem uma ou mais interfaces de
negcio. Ela pode remota ou local, mas no ambas.
Interfaces remotas so capazes de receber invocaes de
mtodos de clientes em rede.
Valores de parmetros e o valor de retorno so
copiados. Semntica de chamada por valor.
Interfaces locais s esto disponveis dentro da mesma
JVM (Java Virtual Machine) do bean de sesso.
No copia os valores de parmetro ou o valor de
retorno, seguem uma semntica de chamada de
referncia.
Atribuio de nomes (JNDI)


Java Naming and Directory Interface
Objetivo: fornecer aos clientes um mecanismo
para localizar recursos ou objetos distribudos.
Para fazer isso, o servio precisa:
Associar um objeto distribudo a um identificador
Disponibilizar uma API de pesquisa que fornece ao
cliente uma interface para o sistema de atribuio
de nomes.

Exemplo: bean de sesso sem estado
@Local
public interface GerenteDeConteudosLocal{
public List<Conteudo> listarConteudos();
public boolean cadastrarConteudo(Conteudo conteudo);
public boolean atualizarConteudo(Conteudo conteudo);
public boolean removerConteudo(Conteudo conteudo);
}

@Remote
public interface GerenteDeConteudosRemote{
public List<Conteudo> listarConteudos();
public Conteudo recuperarConteudo(Long id);
}

Interfaces:
Exemplo: bean de sesso sem estado
@Stateless
public class GerenteDeConteudos implements
GerenteDeConteudosLocal, GerenteDeConteudosRemote {

@PersistenceContext(unitName=meubanco)
Private EntityManager manager;

public List<Conteudo> listarConteudos() {
return manager.createQuery(select c from conteudo);
}
public void cadastrarConteudo(Conteudo conteudo) {
manager.getTransaction().begin();
manager.persist(contedo);
manager.getTransaction().commit();
}
(...)
Exemplo: bean de sesso com estado
@Local
public interface GerenteDeControleDeAcessoLocal{
public void autenticar(String login, String senha);
public void encerrarSessao(String login);
public List<Conteudo> listarMeusConteudos();
}
Interface:
Exemplo: bean de sesso com estado
@Stateful
public class GerenteDeControleDeAcessoLocal implements
GerenteDeControleDeAcessoLocal {

private Usuario usuarioAutenticado;

public void autenticar(String login, String senha) {
//autenticar usurio
}
public void encerrarSessao(String login) {
usuarioAutenticado = null;
}
public List<Conteudo> listarMeusConteudos() {
()
5. Troca de Mensagens
Beans Baseados em Mensagens
JMS
API que facilita a troca de mensagens entre aplicativos de
corporativos por uma rede.
assncrono: pode enviar uma mensagem sem esperar pela
resposta (no bloqueia a thread atual durante execuo)
Conceitos:
Provedor JMS: sistema de mensagens que trata o roteamento
e a entrega de mensagens
Clientes JMS: aplicativos que usam os recursos JMS
Produtor: cliente JMS que envia mensagens
Consumidor: cliente JMS que recebe mensagens
Um nico cliente pode ser tanto um produtor como um
consumidor.
JMS Formas de envio
Publicao e assinatura:
Um produtor pode enviar uma mensagem a muitos
consumidores por meio de um canal virtual chamado tpico.
Os consumidores podem optar por se inscreverem em um
tpico
Quaisquer mensagens endereadas a um tpico so
entregues a todos os seus consumidores.
um modelo baseado em PUSH, as mensagens so
transmitidas automaticamente aos consumidores sem que
estes precisem requisitar ou consultar novas mensagens
Analogia: lista de e-mails

JMS Formas de envio
Ponto a ponto:
Permite que clientes JMS enviem e recebam
mensagens sncronas ou assncronas via canais
virtuais conhecidos como filas.
um modelo baseado conceitualmente em PULL, em
que as mensagens so solicitadas a partir da fila em
vez de adicionadas ao cliente automaticamente.
Uma fila pode ter mltiplos receptores, mas somente
um receptor pode receber cada mensagem por vez

JMS
Editor Tpico
Assinante
Assinante
Publica e assina 1 -> Muitos
Ponto a ponto (1 -> 1)
Remetente Fila
Destinatrio
em potencial
Destinatrio
em potencial
JMS Formas de envio
Qual usar?
Praticamente o que d pra fazer em uma d pra fazer
com a outra.
Com pub/sub qualquer numero de assinantes pode
ouvir um tpico e eles recebero copia da mesma
mensagem
O modelo p2p mais conveniente quando se quer
que um receptor particular processe uma dada
mensagem uma vez.

JMS Exemplos prticos de uso
Efetuar a cpia (replicao) de um contedo para
outro servidor
Emitir uma notificao de acesso a um contedo
remoto
Enviar um aviso quando um contedo for cadastrado
ou modificado.

Beans baseados em mensagens
(Message Driven Bean)
Componentes desenvolvidos para transao do lado
do servidor
Sem informaes de estado, responsabilidade de
processar mensagens assncronas entregues via JMS.
Enquanto o MDB responsvel pelo processamento,
o container gerencia o ambiente do componente,
incluindo transaes, segurana, recursos,
concorrncia e reconhecimento de mensagem.
um enterprise bean comum, mas no possui
interface de negcio remota ou local, visto que ele s
responde a mensagens assncronas

Beans baseados em mensagens


@MessageDriven(mappedName=jms/Queue)
public class MessageBean implements javax.jms.MessageListener {
public void onMessage(Message message) {
String msg = (TextMessage) message;
System.out.println("Mensagem Recebida: + msg.getText());
}
}


Exemplo:
6. Arquitetura Integrada
Servidor de Aplicaes
Servidor Web (Viso)
Aplicao Corporativa - Arquitetura
HTML
Cliente Web
Arquivos
estticos
JSP
Servlet
Servidor EJB (Negcios)
Cliente Applet
Cliente
Stand-Alone
JDBC
JDBC
Bean de
entidade
Bean de
entidade
JSF
Managed
Bean
Servidor JNDI
SessionBean
Stateless
SessionBean
Stateless
SessionBean
Stateful
SessionBean
Stateful
RMI / IIOP
JNDI
JMS
HTTP
Legenda:
Servidor JMS
Aplicao
Legada
7. Tpicos adicionais
Consideraes
O que mais possvel fazer com EJB?
Agendamento do envio de mensagens
(TimerService API)
Restries de Segurana
Listeners (Ouvintes de eventos)
Interceptadores
Clientes e Servidores Web Services (JAX-WS)

8. Consideraes Finais
Consideraes
uma tecnologia preparada para sistemas
corporativos ,portanto avalie a necessidade;
Quando utilizar?
Controle de transaes de negcios
Componentes reutilizveis
Aplicativos com envio de mensagens assncronas
Gerenciamento do contexto de persistncia
Quando no utilizar?
Aplicativos que requerem o controle de threads
Necessidade de alto desempenho
Sistemas simples de controle de banco de dados





Dvidas?
E-mail:
diegopessoa12@gmail.com

Ambiente Virtual da disciplina:
http://virtual.ifpb.edu.br/moodle/

Exerccios!
Material complementar para configurao do
ambiente

Вам также может понравиться