Arquitetura EJB

Este tópico fornece uma visão geral de alto nível da arquitetura de componente distribuído definida na especificação da arquitetura EJB (Enterprise JavaBeans™) da Sun Microsystems.

As especificações Enterprise JavaBeans completas e as descrições da tecnologia estão disponíveis no Web site java.sun.com.

Os beans corporativos fornecem vários benefícios para desenvolvedores de aplicativos:

Beans corporativos
Um bean corporativo é um componente não-visual de um aplicativo corporativo distribuído, orientado a transações. Os beans corporativos são normalmente implementados em contêineres EJB e executados em servidores EJB. É possível customizá-los alterando seus descritores de implementação e montá-los com outros beans para criar novos aplicativos. Há três tipos de beans corporativos: beans de sessão, beans de entidade e beans orientados a mensagens.
  • Beans de sessão: Beans de sessão são beans corporativos não-persistentes. Podem ser com preservação de estado ou sem preservação de estado. Um bean de sessão com preservação de estado age em nome de um único cliente e mantém informações de sessão específicas do cliente (chamadas de estado de conversação) em várias chamadas de método e transações. Existe durante uma única sessão cliente/servidor. Um bean de sessão sem preservação de estado, em comparação, não mantém nenhum estado de conversação. Os beans de sessão sem preservação de estado são agrupados por seu contêiner para manipular vários pedidos de vários clientes.
  • Beans de entidade: Beans de entidade são beans corporativos que contêm dados persistentes e que podem ser salvos em vários data stores persistentes. Cada bean de entidade carrega sua própria identidade. Os beans de entidade que gerenciam sua própria persistência são chamados de beans de entidade BMP (persistência gerenciada por bean). Os beans de entidade que delegam sua persistência para seus contêineres EJB são chamados de beans de entidade CMP (persistência gerenciada por contêiner).
  • Beans orientados a mensagens: Beans orientados a mensagens são beans corporativos que recebem e processam mensagens JMS. Ao contrário dos beans de sessão ou de entidade, os beans orientados a mensagens não possuem interfaces. Eles podem ser acessados somente por meio do sistema de mensagens e não mantêm nenhum estado de conversação. Os beans orientados a mensagens permitem comunicação assíncrona entre a fila e o listener e fornecem separação entre o processamento de mensagens e a lógica de negócios.
Visualização do Cliente Remoto
A especificação visualização do cliente remoto tornou-se disponível a partir do EJB 1.1. A visualização do cliente remoto de um bean corporativo não depende do local. Um cliente em execução na mesma JVM que a instância de bean utiliza a mesma API para acessar o bean que um cliente em execução em uma JVM diferente na mesma máquina ou em uma máquina diferente.
  • Interface remota: A interface remota especifica os métodos de negócios remotos que um cliente pode chamar em um bean corporativo.
  • Interface home remota: A interface home remota especifica os métodos utilizados por clientes remotos para localizar, criar e remover instâncias de classes do bean corporativo.
Visualização do Cliente Local
A especificação visualização do cliente local está disponível no EJB 2.0 ou posterior. Ao contrário da visualização do cliente remoto, a visualização do cliente local de um bean depende do local. O acesso da visualização do cliente local a um bean corporativo requer ambos, o cliente local e o bean corporativo que fornece a visualização do cliente local, para estar na mesma JVM. A visualização do cliente local, portanto, não fornece a transparência de local fornecida pela visualização do cliente remoto. As interfaces locais e as interfaces home locais fornecem suporte para acesso reduzido a partir de beans corporativos que são clientes locais. Os beans de sessão e de entidade podem ser completamente acoplados a seus clientes, permitindo acesso sem o código extra normalmente associado a chamadas de método remotas.
  • Interface local: A interface local é uma versão reduzida da interface remota, mas para clientes locais. Ela inclui métodos de lógica de negócios que podem ser chamados por um cliente local.
  • Interface home local: A interface home local especifica os métodos utilizados por clientes locais para localizar, criar e remover instâncias de classes do bean corporativo.
Visualização do Cliente de Serviço da Web
Na especificação EJB 2.1, a arquitetura EJB introduziu o suporte para serviços da Web. Um cliente para um bean de sessão pode ser um cliente de serviço da Web. Um cliente de serviço da Web pode utilizar a visualização do cliente de serviço da Web de um bean de sessão sem preservação de estado, que possui uma interface de nó de extremidade de serviço correspondente.
  • Service endpoint interface: A service endpoint interface de um bean de sessão sem preservação de estado expõem a funcionalidade do bean de sessão como um nó de extremidade de serviço da Web. O documento WSDL (Web Service Description Language) de um serviço da Web descreve o serviço da Web como um conjunto de nós de extremidade que opera em mensagens. Um documento WSDL pode incluir a service endpoint interface de um bean de sessão sem preservação de estado como um de seus nós de extremidade. Um bean de sessão sem preservação de estado existente pode ser modificado para incluir uma visualização de cliente de serviço da Web ou uma service endpoint interface pode ser mapeada a partir de uma WSDL existente para fornecer a interface correta.

    Uma visualização do cliente de serviço da Web não depende de local e pode ser acessada por meio de chamadas remotas.

Arquivo JAR do Cliente EJB
Um arquivo JAR do cliente EJB é um arquivo JAR opcional que pode conter as interfaces clientes que um programa cliente precisa para utilizar as visualizações de clientes dos beans corporativos contidos no arquivo JAR EJB. Se você decidir não criar um arquivo JAR do cliente EJB para um módulo EJB, todas as classes de interfaces clientes estarão no arquivo JAR EJB. Por padrão, o ambiente de trabalho cria projetos JAR do cliente EJB para cada projeto EJB correspondente.
Contêiner EJB
Um contêiner EJB é um ambiente de tempo de execução que gerencia um ou mais beans corporativos. O contêiner EJB gerencia os ciclos de vida de objetos do bean corporativo, coordena transações distribuídas e implementa a segurança de objetos. Geralmente, cada contêiner EJB é fornecido por um servidor EJB e contém um conjunto de beans corporativos executados no servidor.
Descritor de Implementação
Um descritor de implementação é um arquivo XML compactado com os beans corporativos em um arquivo JAR EJB ou um arquivo EAR. Ele contém metadados que descrevem o conteúdo e a estrutura dos beans corporativos, a transação do tempo de execução e as informações de segurança do contêiner EJB.
Servidor EJB
Um servidor EJB é um processo ou aplicativo de alto nível que fornece um ambiente de tempo de execução para suportar a execução de aplicações servidor que utilizam beans corporativos. Um servidor EJB fornece um serviço de nomes acessível por JNDI, gerencia e coordena a alocação de recursos para aplicativos clientes, fornece acesso a recursos do sistema e fornece um serviço de transações. Um servidor EJB poderia ser fornecido por, por exemplo, um servidor de banco de dados ou de aplicativos.

(C) Direitos Autorais da IBM Corporation 2000, 2005. Todos os direitos reservados.