Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de...
Transcript of Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de...
Introdução a EJB 3.0
Eduardo Martins Guerra
Instituto Tecnológico de AeronáuticaCurso de Pós-Graduação em Engenharia de Software
Programação Distribuída com Java EE
Objetivo da Aula
Apresentar os fundamentos da tecnologia de EJBs e quais são os
impactos em incluí-los na arquitetura de um sistema distribuído.
• O que faz um EJB Container?
• Tipos de EJB
• Partes de um EJB
• Comunicação Remota
• Repositório JNDI
• Funcionamento dos EJBs
Agenda da Apresentação
O que faz um EJB Container?
O uso de EJBs deixa os desenvolvedores focarem na lógica de negócios, enquanto os outros serviços
ficam a cargo de quem fez o container EJB.
• Controle de Transação
• Segurança
• Concorrência
• Gerenciamento de comunicações
• Gerenciamento de Recursos
• Persistência
• Serviço de Mensagens
• Customizações em tempo de deploy
• Injeção de Dependências
EJBContainer
Tipos de EJB
EntityÉ utilizado para representar uma entidade persistente. Normalmente representa uma linha do banco de dados. Na versão 3.0 não é mais um “EJB”.
Message-drivenÉ utilizado como consumidor de mensagens, escutando mensagens em um servidor de mensagens. Utilizado para processamento assíncrono. Muito usado com mensagens JMS.
Session
Representa um processo, uma regra de negócios. Pode ser statefull (com estado) ou stateless (sem estado).
O que possui um EJB?
Bean Class
É a classe que possui a implementação dos métodos de negócios. Deve implementar uma Business Interface e possuir uma das anotações @Stateful, @Stateless ou @MessageDriven (ou configuração no Deployment Descriptor).
Business Interface
É uma interface normal, onde os métodos de negócio são declarados. Deve possuir a anotação @Remote ou @Local (default), e nunca as duas. Serão os métodos disponibilizados para os clientes.
Deployment Descriptor
Apesar das metainformações dos EJBs poderem ser quase todas configuradas via anotação, elas podem ser sobrepostas no deployment descriptor (para alterações em tempo de deploy). Na versão 3.0 não é obrigatório!
Poderes de um EJB
Um EJB possui algums “poderes” recebidos do container que muitas vezes faz com que o seu uso seja mais vantajoso do que de uma classe normal.
• Suporte a transações distribuídas• Controle de Acesso• Pode ser disponibilizado remotamente• Recebe injeções de dependência de recursos• Tem seu ciclo de vida gerenciado• Pode ter seus métodos interceptados
Comunicação com EJBs
A comunicação é feita utilizando RMI-IIOP
O retorno dos métodos devem ser:
• Tipos primitivos
• Objetos serializáveis
• Array de primitivos ou objetos serializáveis
• Objeto remoto
Cliente
Stub Skel
RemoteObject
JNDI
JNDI (Java Naming and Directory Interface) é uma API para acessar serviços de nomes e diretórios em
aplicações Java. É utilizado em Java EE para a localização de objetos distribuídos.
• Componentes Enterprise Java Bean.
• Fabrica de recursos com drivers JDBC e JMS.
• Referência da transação do usuário (UserTransaction).
• DataSources e entradas de configuração da aplicação.
Com JNDI localizamos os seguintes recursos:
Para acessarmos um serviço de nomes devemos criar um objeto do tipo InitialContext.
Obtendo a Referência de um EJB
Cliente
JNDI Naming Service
“Name”
lookup(“Name”)
Bus
ines
s In
terf
ace
Stub
Stub
EJBObject
Bus
ines
s In
terf
ace
ServicesBean
create()
Bus
ines
s In
terf
ace
Invocando Métodos em um EJB
Cliente
ServicesBean
EJBObject
Stub
Bus
ines
s In
terf
ace
Bus
ines
s In
terf
ace
Bus
ines
s In
terf
ace
Exercício – Session Bean
Criar um Session Bean para a execução remota da funcionalidade criada para a aplicação MVC.
• Colocar a regra de negócios no Session Bean.
• Realizar o acesso remoto a partir do Servlets.
• Observar os tipos de objetos que podem ser retornados.
• Criar um bean @Stateless
• Criar uma interface @Remote