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
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 maisJ2EE 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 maisSession 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