Este tópico fornece uma descrição geral da arquitectura de componentes
distribuída definida na especificação da arquitectura Sun Microsystems Enterprise JavaBeans™ (EJB)
versão 2.x.
As especificações e descrições completas da tecnologia dos Enterprise
JavaBeans estão disponíveis no sítio da Web
java.sun.com.
Os beans empresariais facultam diversos benefícios para os programadores de aplicações. São caracterizados por:
- Permitir ao utilizador construir aplicações distribuídas combinando componentes
programados com ferramentas de fornecedores diferentes.
- Facilitarem a escrita de aplicações. Não tem de lidar com os detalhes de
baixo nível da transacção e gestão do estado, execução simultânea de múltiplos
módulos, interconexão de recursos e outros API complexos de baixo nível. Contudo, caso seja necessário, especialistas em programação ainda podem ter
acesso directo aos API de baixo nível.
- Poderem ser programados uma vez e implementados em várias plataformas
sem recompilação ou modificação do código fonte.
- Facultam compatibilidade entre a especificação de EJB que orienta a utilização
de beans empresariais e outras API de Java™ e CORBA. Isto também faculta a interoperacionalidade entre beans empresariais e aplicações não Java.
- Beans empresariais
- Um bean empresarial é um componente não visual de uma aplicação
empresarial distribuída que está orientada para a transacção. Os beans empresariais são geralmente implementados em contentores EJB e
executados em servidores EJB. Pode personalizá-los ao mudar os descritores de implementação e agregá-los com
outros beans para criar novas aplicações.
Existem três tipos de beans empresariais: beans de sessão, beans de entidade e beans orientados por mensagens. Os beans de sessão e orientados por mensagens são componentes grosseiros concebidos para modelar o processo empresarial, enquanto os beans de entidade são utilizados para modelar objectos de dados refinados.
- Beans de sessão: Os beans de sessão são beans empresariais impersistentes.
Podem ter ou não registo.
- Beans de sessão com estado: Agem em nome de
um único cliente e mantêm informações sobre a sessão específica do cliente
(denominada estado conversacional) através de várias chamadas de método e transacções. Existe durante o tempo que dura uma sessão única cliente/servidor.
- Beans de sessão sem estado: Não mantêm qualquer estado conversacional e são agrupados pelo respectivo contentor para processar vários pedidos de vários clientes.
- Beans de entidade: os beans de entidade são beans empresariais que contêm dados
persistentes e que podem ser guardados em vários armazenamentos de dados persistentes. Cada bean de entidade tem a sua própria identidade. Os beans de entidade que gerem a respectiva persistência são denominados beans de entidade de persistência gerida por beans (BMP - bean-managed persistence). Os beans de entidade que delegam a sua persistência ao contentor de EJB são
denominados beans de entidade de persistência gerida pelo contentor (CMP - container-managed persistence).
- Beans orientados por mensagens: Beans orientados por
mensagens são beans empresariais que recebem e processam mensagens JMS. Ao contrário dos beans de sessão ou de entidade, os beans orientados por mensagens não têm interfaces. Podem ser acedidos apenas através do serviço de mensagens e não mantêm qualquer estado conversacional. Os beans orientados por mensagens permitem uma comunicação assíncrona entre a
fila e a escuta e facultam a separação entre o processamento de mensagem e a
lógica empresarial.
- Vista do cliente remoto
- A especificação da vista do cliente remoto ficou disponível a partir da versão EJB 1.1.
A vista do cliente remoto de um bean empresarial não depende da localização.
Um cliente executado no mesmo JVM que uma instância de um bean utiliza a mesma API
para aceder a um bean que um cliente executado num JVM diferente, quer na mesma
máquina, quer numa diferente.
A vista de cliente remoto é composta por duas interfaces
- Interface remota: A interface remota especifica os
métodos empresariais remotos que um cliente pode chamar num bean empresarial.
- Interface principal remota: A interface principal remota
especifica os métodos utilizados por clientes remotos para localizar, criar e
remover instâncias de classes de beans empresariais.
- Vista do cliente local
- A especificação da vista do cliente local está
disponível na versão EJB 2.0 ou posterior.
Ao contrário da vista do
cliente remoto, a vista do cliente local de um bean dependente da localização.
O acesso da vista do cliente local a um bean empresarial requer o cliente local
e o bean empresarial que permite que a vista do cliente local esteja no mesmo JVM.
Assim sendo, a vista do cliente local não faculta a transparência da
localização facultada pela vista do cliente remoto.
As interfaces locais e as interfaces principais locais facultam apoio ao acesso
leve de beans empresariais que sejam clientes locais. Os beans de sessão e de entidade podem ser acoplados com os seus clientes,
permitindo acesso sem a informação complementar geralmente associada às
chamadas de método remotas. A vista de cliente local é composta por duas interfaces:
- Interface local: A interface local é uma versão leve da
interface remota, mas para clientes locais. Inclui métodos de lógica empresarial que podem ser chamados por um cliente local.
- Interface principal local: A interface principal local
especifica os métodos utilizados por clientes locais para localizar, criar e
remover instâncias de classes de beans empresariais.
- Vista do cliente de serviço Web
- Na especificação do EJB 2.1, a arquitectura do EJB introduziu o suporte para serviços Web.
Um cliente de um bean de sessão pode ser um cliente de serviço Web.
Um cliente de serviço Web pode fazer uso da vista do cliente de serviço Web de um bean de sessão sem registo, que tem uma interface terminal de serviço correspondente.
- Interface terminal de serviço
- A interface terminal de serviço de um bean de sessão sem registo expõe a funcionalidade do bean de sessão como sendo um serviço da Web terminal. O documento da Linguagem de Descrição de Serviço Web (WSDL - Web Service
Description Language) de um serviço Web descreve-o como sendo um conjunto de
terminais que operam em mensagens.
Um documento WSDL pode incluir a interface terminal de serviço de um bean de
sessão sem registo como um dos seus terminais.
Um bean de sessão sem registo existente pode ser modificado para incluir uma
vista de cliente de serviço Web ou uma interface terminal de serviço pode
ser correlacionada a partir de um WSDL existente para facultar a interface
correcta.
Uma vista de cliente de serviço Web é independente da localização e pode
ser acedida através de chamadas remotas.
- Ficheiro JAR de clientes EJB
- Um ficheiro JAR de cliente EJB é um ficheiro JAR opcional que pode conter
as interfaces de cliente de que um programa de cliente necessita para utilizar
as vistas de cliente de beans empresariais contidos no ficheiro JAR EJB. Se decidir não criar um ficheiro JAR EJB para um módulo EJB, todas as classes
de interface de cliente estarão no ficheiro JAR EJB. Por definição, a área de trabalho cria projectos JAR de clientes EJB para cada projecto EJB correspondente.
- Contentor EJB
- Um contentor EJB é um ambiente em tempo de execução que gere um ou
mais beans empresariais. O contentor EJB gere os ciclos de vida de objectos do bean empresarial,
coordena transacções distribuídas e implementa a segurança dos objectos. Geralmente, cada contentor EJB é facultado por um servidor EJB e contém um
conjunto de beans empresariais que são executados no servidor.
- Descritor de implementação
- Um descritor de implementação é um ficheiro XML incluído com os
beans empresariais num ficheiro JAR EJB ou num ficheiro EAR. Contém metadados, que descrevem os conteúdos e a estrutura de beans
empresariais, e a transacção em tempo de execução e a
informação de segurança para o contentor EJB.
- Servidor EJB
- Um servidor EJB é um processo ou aplicação de alto nível que
faculta um ambiente em tempo de execução para suportar a execução das
aplicações de servidor que utilizam beans empresariais. Um servidor EJB faculta um serviço de nomenclatura acessível ao JNDI, gere e
coordena a alocação de recursos para as aplicações dos clientes e faculta o acesso
a recursos do sistema e um serviço de transacção. Um servidor EJB pode ser facultado, por exemplo, por um servidor de base de
dados ou de aplicação.