• Nenhum resultado encontrado

Modelo de Componentes Enterprise Java Beans

2.3 Tecnologias Orientadas a Componentes

2.3.2 Modelo de Componentes Enterprise Java Beans

O modelo de componentes Enterprise Java Beans (EJB) [18] é um modelo de componentes para o desenvolvimento e instalação de aplicações na linguagem de programação Java, pertencentes ao domínio de negócios. EJB é um modelo de componentes específico para a linguagem Java no contexto da plataforma Java 2 Enterprise Edition (J2EE) [79]. O modelo EJB consiste de uma especificação aberta fornecida pela Sun Microsystems a partir de 1998. Esta especificação define um modelo de componentes para o lado servidor.

Segundo a especificação, um componente EJB é denominado “enterprise bean”. Estes compo- nentes, localizados no lado do servidor, podem ser definidos como unidades de software reutilizáveis que contêm a lógica da aplicação. Os aspectos não-funcionais também são providos automaticamente pelo contêiner.

A especificação define três tipos de componentes: sessão, entidade e orientado a mensagem. O componente de sessão é um componente transiente que existe durante uma única sessão cliente/servidor. O componente entidade é persistente, com identidade única. Este componente é utilizado para mo- delar entidades de dados permanentes, mantidos em bancos de dados. O componente orientado a mensagem é utilizado quando a invocação assíncrona entre componentes é necessária. Este compo-

nente é um consumidor de mensagens de notificação assíncronas que são enviadas pelos clientes. Este componente não tem nenhuma identidade ou visibilidade para o cliente, é transiente e sem estado.

A implementação do modelo de componentes EJB é dividida em duas partes: o servidor EJB e o contêiner. Um componente EJB é instalado e executado em um contêiner. O contêiner gerencia o ciclo de vida do componente e é a parte central da implementação do modelo de componentes EJB e, juntamente com o servidor EJB, fornece todos os recursos necessários para que um componente distribuído possa interagir com outros componentes.

Um servidor EJB provê o ambiente de execução para um ou mais contêineres. Ele é o responsável pela gerência de recursos de baixo nível do sistema e em prover os aspectos não-funcionais alocando- os ao contêiner quando necessário.

Um contêiner provê o encapsulamento de um ou mais componentes de uma aplicação. A Figura 2.3 ilustra o contêiner no ambiente EJB. O contêiner consiste das seguintes partes:

• Contrato de componente: um conjunto de interfaces especificadas pelo contêiner e que os componentes devem implementar ou estender para que ele possa gerenciá-las. Exemplos são mecanismos de callback e interfaces com operações para criar, encontrar e destruir compo- nentes.

• Serviços declarativos: são serviços que o contêiner interpõe entre clientes e componentes con- forme especificado no descritor de instalação de cada componente. Semelhante ao CCM, a infra-estrutura provida pelo contêiner, em conjunto com o servidor EJB, facilita o desenvolvi- mento de aplicações agregando os aspectos não-funcionais a um componente tais como segu- rança, gerência de ciclo de vida, de estado, de transação e de persistência. O desenvolvedor do componente EJB, como no CCM, concentra-se apenas nos aspectos funcionais do componente.

• Interfaces de serviços do contêiner: interfaces para os serviços Java externos ao contêiner. Exemplos são as interfaces padrão da plataforma J2EE, tais como JDBC (para acesso a ban- cos de dados), JTA2 (para o suporte a transações distribuídas) e JNDI3 (provê uma forma

padronizada para o acesso a diferentes serviços de nomes e de diretório distribuído).

O cliente da aplicação interage com o componente EJB através de duas interfaces geradas pelo contêiner: as interfaces Home e Remote. Quando um cliente faz uma requisição para alguma opera- ção destas interfaces, o contêiner as intercepta, personalizando ou adicionando serviços de gerência (propriedades não-funcionais), antes de repassá-las para os componentes destino.

2Java Transaction API.

Home de Callback Interface Externa Interface Contêiner Cliente RMI Componente EJB Remote Plataforma Java JDBC JNDI Serviço de Serviço (JTS) de Nomes JTA Transações (RMI Registry) Interface para os Base de Dados Serviços Java

Fig. 2.3: Contêiner no ambiente EJB.

A interface Home atua como uma fábrica em que clientes podem criar, encontrar ou remover componentes EJB. A interface Remote provê, para os clientes, o acesso aos métodos da lógica da aplicação do componente EJB.

O mecanismo de interação proporcionado pelo modelo EJB é baseado em chamada de métodos remotos, portanto obedecendo ao estilo de interação operacional proposto pelo RM-ODP. Diferente- mente do modelo CCM, EJB não fornece a interface de sinal e, semelhantemente ao CCM, também não fornece a interface stream.

Empacotamento e Distribuição de Componentes EJB

Os componentes EJB podem ser empacotados como componentes individuais, como uma coleção de componentes ou mesmo como uma aplicação completa. Estes componentes são distribuídos em um arquivo denominado ejb-jar no formato JAR. O arquivo ejb-jar contém o descritor de instalação, as classes do componente e as interfaces Home e Remote.

A especificação EJB descreve um mecanismo declarativo, o descritor de distribuição, que é um arquivo XML que contém informações e propriedades de configuração, tais como: informações sobre as classes, atributos transacionais, papéis de segurança e configurações que ditam o comportamento do componente.

Quando um componente é instalado em um contêiner, o contêiner lê o descritor de instalação onde estão especificados os atributos de transação, de segurança, de persistência (manipulada automatica-

mente ou predeterminada pelo componente) e de controle de acesso. A partir destas informações, o contêiner provê automaticamente estes aspectos não-funcionais. O componente é disponibilizado para os seus clientes ou para outros componentes na finalização desta etapa de instalação.

Considerações Gerais do Modelo EJB

Os componentes EJB são, genericamente, similares a componentes CCM. De fato, a especificação CCM pode ser vista como uma extensão do modelo de componentes EJB. No entanto, a especificação CCM define o modelo de componentes acima do modelo de objetos distribuídos CORBA, enquanto que a especificação EJB define que o modelo de componentes EJB é suportado pelo modelo de ob- jetos de Java. Assim, os componentes segundo o modelo EJB são dependentes de linguagem de programação.