Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de...

12
Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída com Java EE

Transcript of Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de...

Page 1: Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.

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

Page 2: Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.

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.

Page 3: Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.

• 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

Page 4: Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.

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

Page 5: Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.

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).

Page 6: Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.

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!

Page 7: Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.

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

Page 8: Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.

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

Page 9: Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.

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.

Page 10: Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.

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

Page 11: Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.

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

Page 12: Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.

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