Enterprise Java Bean Enterprise JavaBeans

Transcrição

Enterprise Java Bean Enterprise JavaBeans
Enterprise Java Bean
Introdução
Elementos do Modelo
Enterprise JavaBeans
Componentes Distribuídos
„
„
„
„
A especificação do Enterprise JavaBeansTM (EJB) define
uma arquitetura para o desenvolvimento de componentes
de software distribuídos que executam no lado servidor de
uma aplicação corporativa
As organizações podem construir seus próprios
componentes ou adquiri-los de terceiros
Esses componentes “server-side”, chamados enterprise
beans, são objetos armazenados em containers EJB que
fornecem serviços remotos para clientes distribuídos através
da rede
Os containers fornecem uma camada de portabilidade que
permite que quaisquer beans operem em quaisquer
containers
1
EJBs X Java Beans
Componentes Distribuídos
„
Um Enterprise JavaBean não é um tipo de JavaBean
„
„
„
A arquitetura de componentes Enterprise JavaBeans define
„
„
„
Ambos fazem parte de uma arquitetura de componentes
Implementam um contrato que permite o seu reuso por alguma
outra aplicação padrão ou framework
Regras para construir componentes contendo classes,interfaces e
arquivos XML de configuração visando a implantação automática em
servidores EJB
Um EJB consiste de no mínimo três classes e um XML em um JAR
A arquitetura de componentes JavaBeans define
„
„
„
Regras para construir classes, para permitir um tratamento especial
por parte de ferramentas e frameworks
Um JavaBean consiste de no mínimo uma classe contendo um
método get() e um construtor sem argumentos
JavaBeans não são parte da arquitetura J2EE
Por que usar EJB
Componentes Distribuídos
„
„
„
„
„
Portabilidade (Java) - filosofia “write once, run
anywhere”
Separação entre especificação e implementação
Interoperabilidade
Possibilita aos desenvolvedores concentrarem-se na
lógica do negócio
Compatibilidade com protocolos CORBA/IIOP
2
Arquitetura
Componentes Distribuídos
Descritor de
implantação
Descritor de
implantação
Componentes da Arquitetura
Componentes Distribuídos
„
„
Protocolo de Comunicação RMI/IIOP
Beans
„
„
Entity bean
Session session
„
„
„
„
„
„
Session bean sem estado
Session bean com estado
Message-driven bean
Descritor de implantação
Container
Servidor EJB
3
Enterprise Beans
Componentes Distribuídos
„
„
Componente chave da arquitetura EJB
Apresentam as seguintes características:
„
„
„
„
Dependem de um container para fornecer-lhes
serviços ao longo de seu ciclo de vida
Contêm a lógica do negócio que opera sobre os
dados da aplicação
Instâncias EJB são criadas e mantidas pelo
container
Podem ser otimizados no momento da
implantação através da edição de um descritor
baseado em XML
Enterprise Beans
Componentes Distribuídos
„
„
„
Serviços ao nível de sistema, como segurança e
gerência de transação, são descritos
separadamente do enterprise bean
Um cliente nunca acessa um enterprise bean
diretamente, o ambiente do container atua como
mediador para o acesso
Um enterprise bean é projetado para ser portável
através de servidores EJB fornecidos por
diferentes fabricantes
4
Enterprise Beans
Componentes Distribuídos
„
Há três tipos de enterprise beans
(especificação 2.0 da arquitetura):
„
„
Entity Beans – representam um objeto do negócio que
existe em uma estrutura de armazenamento
persistente
Session Beans – realizam uma tarefa para um cliente
„
„
„
Com estado
Sem estado
Message-driven Beans – atuam como listeners para a
API Java Message Service, processando mensagens
de forma assíncrona
Containers
Componentes Distribuídos
„
„
„
„
„
Um Container EJB é um ambiente de tempo de execução
que contém e executa componentes EJB e fornece um
conjunto de serviços padrões para esses componentes
São receptáculos de software que sabem como se comunicar
com beans e gerenciá-los
Gerenciam a interação entre o bean e seu servidor
Fornecem uma interface uniforme para o bean e para o
servidor
Criam novas instâncias de beans e gerenciam sua
persistência
„
„
fornecem mapeamento entre o bean e o banco de dados subjacente
do container
fornecem o código da classe skeleton para as interfaces home e
remota
5
Containers
Componentes Distribuídos
„
Situam-se entre o cliente e o bean e acessam
serviços do servidor de aplicação
„
„
desenvolvedores não se preocupam com a infraestrutura
Alguns serviços incluem:
„ Gerenciamento de Persistência
„ Transações
„ Concorrência
„ Gerenciamento de Threads
„ Segurança
Containers
Componentes Distribuídos
„
Muitos fabricantes fornecem containers para EJB e
seus produtos. Entre eles estão:
„ IBM
„ WebLogic
„ Sybase
„ Oracle
„ CORBA Object Request Brokers tais como Inprise
(Borland)
6
Servidor EJB
Componentes Distribuídos
„
„
„
Um servidor EJB é definido como um Servidor de
Aplicação que contêm e executa um ou mais
Containers EJB
O EJB Server Provider é responsável por fornecer
um Servidor EJB
Em geral pode-se considerar que o Container e o
Servidor EJB são o mesmo
CORBA and RMI/IIOP
Componentes Distribuídos
„
„
A especificação do EJB define interoperabilidade
com CORBA através da compatibilidade com
protocolos CORBA
Obtida através:
„
„
do mapeamento de serviços EJB, como JTS e JNDI, para
os serviços CORBA correspondentes; e
da implementação de RMI no topo do protocolo IIOP
CORBA
7
CORBA and RMI/IIOP
Componentes Distribuídos
„
„
„
O uso de CORBA e RMI/IIOP em Enterprise
JavaBeans é implementado no Container EJB e é
responsabilidade do EJB Container provider
O uso de CORBA e RMI/IIOP no Container EJB é
escondido do componente EJB
O Enterprise Bean Provider pode escrever seu
componente EJB e implantá-lo em qualquer
container sem se preocupar com o protocolo de
comunicação utilizado
Classes e Interfaces
8
Classes e Interfaces
Componentes Distribuídos
Interface Home
Componentes Distribuídos
„
„
„
Define os métodos do “ciclo de vida” (create e
remove) que estarão disponíveis para clientes em
uma chamada distribuída
O container EJB implementa a interface home de
cada EJB nele instalado
Permite que clientes criem novos objetos EJB:
BankBeanRemote myBean = myBeanHome.create();
„
Permite que clientes removam objetos EJB:
myBeanHome.remove(myBean);
„
Fornece meta-dados sobre o Bean
9
Interface Home
Componentes Distribuídos
„
Definida com uma interface Java
„
Derivada de javax.ejb.EJBHome
„
„
„
„
„
Herda de java.rmi.Remote
getEJBMetaData() - retorna metadados sobre o bean
remove(primaryKey) – remove o objeto identificado
pela chave primária
remove(handle) – remove o objeto identificado por seu
EJBHandle
Para localizar a interface Home de um enterprise
bean, usa-se JNDI (Java Naming and Directory
Interface)
Interface Remota
Componentes Distribuídos
„
„
Chamada “Objeto EJB”
Define os métodos do negócio específicos do bean e
que estarão disponíveis para os clientes em uma
chamada distribuída
„
„
„
Por exemplo, a interface remota de um bean chamado
BankAccountEJB pode ter métodos de negócios chamados
debit e credit
É compilada pelo compilador ejb para criar stubs e
skeletons RMI
O objeto EJB é fornecido pelo container e delega a
chamada de um método do negócio para a
instância correspondente do enterprise Bean
10
Interface Remota
Componentes Distribuídos
„
Definida como uma interface Java
„
Derivada de javax.ejb.EJBObject
„
„
„
„
„
„
Herda de java.rmi.Remote
getEJBHome() - retorna o objeto Home para o bean
getPrimaryKey() – retorna a chave primária para o
objeto
getHandle() – retorna um handle para o objeto que
pode ser usado para reestabelecer comunicações
posteriormente; possivelmente em outro servidor
remove() - remove este objeto EJBObject
isIdentical(EJBObject) - retorna se ambos os objetos
são iguais
Interfaces x Utilização
Componentes Distribuídos
11
Interfaces
Componentes Distribuídos
Classe Bean
Componentes Distribuídos
„
Implementa os método do negócio definidos na
Interface Remota
„
„
„
Não é derivada das interfaces Remota/Local ou Home
Deve ter métodos que correspondam às assinaturas
fornecidas pela interface remota/Local e por partes da
interface Home
a conexão entre as chamadas das interfaces
Remota/Home e a implementação do Bean é feita pelo
compilador EJB, o qual cria o código do skeleton
específico para o container
„
Usa-se o descritor de implantação (Deployment Descriptor) para
ajudar a gerar o código de ligação (glue code)
12
Classe Bean
Componentes Distribuídos
„
Os clientes nunca interagem com classes
bean diretamente
„
„
„
A interação é feita através das interfaces home
(create, find, remove) e remota (métodos do
negócio)
Beans que interagem com outros beans são
simplesmente clientes daquele bean
Stubs e skeletons são criados a partir das
interfaces que ligam o cliente e o código do
bean
Classe Bean
Componentes Distribuídos
„
Implementa javax.ejb.[Entity|Session]Bean
„
„
Configura [Entity/Session]Context()
„
„
Fornece chamadas ao container para encontrar o id do
chamador, informações de transações, etc
ejbCreate()
„
„
Herda de javax.ejb.EnterpriseBean; herda de
java.io.Serializable
Chamado pelo container quando o bean é associado a
um objeto
ejbPostCreate() [ apenas Entity Beans ]
„
Chamado pelo container após tornar persistente o estado
do objeto
13
Classe Bean
Componentes Distribuídos
„
ejbPassivate()
„
„
ejbActivate()
„
„
Chamado pelo container quando a instância está sendo
desassociada com um objeto EJB específico (préserialização)
Chamado pelo container quando a instância é obtida a
partir de um pool de instâncias disponíveis e associada a
um objeto EJB específico (pós de-serialização)
ejbRemove()
„
Chamado pelo container de uma instância antes de
remover um objeto EJB do sistema
Classe Bean
Componentes Distribuídos
„
ejbLoad() [ apenas Entity Beans]
„
„
Chamado pelo container para instruir a instância
a sincronizar seu estado com o estado
armazenado no banco de dados
ejbStore() [ apenas Entity Beans ]
„
Chamado pelo container para instruir a instância
a sincronizar o estado armazenado no banco com
o seu estado
14
Ciclo de Vida de Beans
Criação e Remoção de EJBs
Componentes Distribuídos
„
„
„
„
O container de um EJB realiza diversos serviços do
nível de sistema quando um bean é instanciado
(ou obtido a partir de um poll)
Para criar um novo bean ou obter uma referência
local ou remota para o mesmo usa-se sua
interface home
Após localizar a interface home, o cliente obtém a
referência para uma instância através do método
create ()
A remoção de uma instância do bean é feita
através de um dos vários métodos remove ()
disponíveis na interface
15
Instanciação de Beans
Componentes Distribuídos
Modelo Conceitual EJB
Componentes Distribuídos
{ one per bean type }
Container
JNDI
*
<<Interface>>
Home Interface
{ 10s of instances
per bean type }
_Lifecycle Methods_(
<<Class>>
ContainerHomeInterfaceImpl
bean pool
_Lifecycle Methods_(
1
Client
DatabaseAdapter
<<Class>>
ContainerRemoteInterfaceImpl
_Business Methods_( )
*
<<Class>>
Bean
ejbCreate( )
ejbPostCreate( )
ejbPassivate( )
ejbActivate( )
ejbLoad( )
ejbStore( )
ejbRemove( )
setEntityContext( )
unsetEntityContext( )
_Business Methods_( )
<<Interface>>
Remote Interface
_Business Methods_( )
*
{ millions of instances }
16

Documentos relacionados

Enterprise Java Beans

Enterprise Java Beans de maneira semelhante a um listener de eventos, mas ao invés de eventos, recebe mensagens provenientes de aplicações, outro EJB ou componentes web. Clientes não localizam message-driven beans e inv...

Leia mais

J2EE J2EE - Surgimento

J2EE J2EE - Surgimento • J2EE oferece suporte para desenvolvimento de aplicações multi-camadas (multitier) – Cliente (client-tier): interface do usuário – Camada do Meio (middle-tier): oferece serviços para o cliente e l...

Leia mais

Session Beans

Session Beans (stub) para realizar a comunicação –  Cliente Java standalone pode obter via JNDI (pode ser preciso configurar autorização de acesso externo para o serviço EJB) –  Cliente executando em container J...

Leia mais