Enterprise JavaBeans 3.

0
Parte 1: Introdução
<

Rafael Por: Rafael Zancan Frantz >

ATENÇÃO: Este material contém algumas imagens retirardas da docomentação oficial da SUN e adaptadas para este material. As mesmas podem ser encontradas no site www.sun.com. O objetivo deste material é recompilar uma série de informações existentes em diversas fontes e que possam ser utilizadas para o estudo da tecnologia EJB 3.0 pelo leitor. Ao final do material são apresentadas as bibliografias utilizadas para a elaboração do material. Sugere-se que as mesmas sejam utilizadas para aprofundar os conhecimentos nesta tecnologia.

1

O uso de anotações simplificou muito a escrita de componentes EJB.1 o desenvolvedor precisava configurar muitas coisas em arquivos XML. and then deployed on any server plataform that supports the Enterprise JavaBeans specifications”. Applications written using the Enterprise JavaBeans architecture are scalable. O uso de enterprise beans requer um investimento de tempo. principalmente no começo da tecnologia. os EJBs simplificam consideravelmente a criação da infra-estrutura. and multi-user secure. Em oposição a alguns que cultuavam. na primeira especificação da Sun com o intuito de promover uma arquitetura de objetos distribuídos pela Internet. conhecimento de mapeamento de dados Java com os de Bancos de dados pelo JDBC e outros. provê um ambiente para o gerenciamento de componentes. que no desenvolvimento de EJBs o programador precisava somente desenvolver a lógica de negócios os EJBs requerem muita experiência na administração e configuração dos serviços gerenciados pelo container e como são um pool de tecnologias é importante para o o coordenador do projeto ter “know how” de várias conceitos como de objetos distribuídos. Eles podem simplificar o processo de desenvolver aplicações escaláveis. Fazendo parte de uma infra-estrutura de middleware em um modelo Web. ou simplesmente "enterprise beans". esta tecnologia parece complicada. conceitos de transações. Para alguns. mas acrescenta outras dependências em uma implementação específica de um Application Server. These applications may be written once. A definição da Sun Microsystems para Enterprise JavaBeans é: “The Enterprise JavaBeans architecture is a Component architecture for the development and deployment of component-based distributed business applications.0 muitas das configurações que eram feitas em XML agora podem ser feitas através de anotações. Até a versão 2. mas eles podem simplificar o desenvolvimento de aplicações de negócio por resolver alguns requerimentos de serviços nos quais em um sistema robusto faz diferença. A tecnologia Enterprise JavaBeans (EJB) de components. codificação e treinamento. porém a partir da versão 3. 2 .JavaBean O que é um Enterprise JavaBean Os Enterprise JavaBeans foram criados em Março de 1998. transactional. portáveis e reutilizáveis no seu ambiente de negócios. RMI (Java Remote Method Invocation).

Um bean de entidade (um EJB que representa o dado persistente em um meio de armazenamento como um banco de dados relacional) é projetado para prover gerenciamento automático de dados persistentes. A especificação das tecnologias J2EE. consistentemente e somente por aqueles que estiverem autorizados. Implementações de Enterprise Beans podem prover controle a falhas automaticamente quando um servidor sai do ar por crash ou para manutenções. · Alta dispobilidade. Enterprise beans também gerencia uma religação de dados quando acontece uma falha de sistema. A tecnologia de EJB fornece interfaces remotas de negócio para esta transparência de localização. aumentando assim a disponibilidade da aplicação. inclusive dados legados.Vários requerimentos que um sistema robusto necessita estão listados abaixo junto com o que os EJBs oferecem para suprir estas demandas. A portabilidade diminui os riscos de uma aplicação tornarse obsoleta quando sistemas operacionais são atualizados ou hardware são substituídos. Sistemas de missão crítica necessitam estar disponíveis todo dispobilidade tempo. · Controle Transacional e de Segurança Dados empresariais devem ser atualizados Segurança. · Gerenciamento da Persistência Muitas aplicações empresariais manipulam os dados Persistência. Enterprise beans são projetados para gerenciar acessos concorrentes e possuem automaticamente resursos multi-thread. Enterprise beans provê um controle declarativo das configurações de segurança e de transações. hardware e sistemas operacionais faz melhor uso de dos recursos da sua empresa. Enterprise beans provê estes benefícios porque são verdadeiros componentes de software. persistentes. · Acesso remoto a dados Aplicações empresariais tipicamente acessam dados a partir dados. Enterprise beans podem também controlar as transações e a segurança programaticamente. quando a rede está indisponível ou não confiável. prover reusabilidade. · Escalabilidade Aplicações normalmente crescem. · Portabilidade Uma aplicação que é portável através de múltiplas plataformas de Portabilidade dade. Isto é feito a partir da versão 3. aumentando o número de Escalabilidade. portabilidade e uma clara separação da interface com a implementação. acesso concorrente a dados sem sacrificar a consistência. · Modelo desenvolvido baseado em componentes Componentes de software podem componentes. de recursos remotos múltiplos. Java Persitence API. assegura que os serviços para sistemas empresariais estejam disponíveis através de vários fornecedores e plataformas. A maioria destes requerimentos são aplicáveis na aplicação desde que tenham as seguintes necessidades. Por terem um ciclo de vida gerenciado pelo container as instâncias dos beans que servem as requisições podem ser colocadas em um pool 3 . · Acesso concorrente a dados Aplicações empresarias multi-usuárias devem prover dados. principalmente em se tratando de sistemas heterogêneos e provê uma futura flexibilidade de integração. simplificando a customização e aumentando a flexibilidade.0 de EJB utilizando a API de persitência. usuários e novos requisitos.

os EJBs podem executar a lógica do negócio nos métodos chamados 4 .Pouca reusabilidade da solução. os “TP monitors” que vieram de um ambiente Mainframe. vêm dos monitores transacionais. . um EJB é um componente server-side que encapsula a lógica do negócio de uma aplicação. · Neutralidade do tipo de cliente.para maximizar a eficiência de recursos. A lógica do negócio é o código que cumpre a finalidade de uma aplicação. o container de EJB fornece serviços a nível de sistema (como transações.” EJBs são os componentes J2EE que executam a tecnologia de Enterprise JavaBeans. por exemplo.Um middleware de alto nível é estremamente complicado de construir e de manter uma equipe de manutenção para o código. Escrito na linguagem de programação de Java. . por exemplo) a seus EJBs. tipos de cliente. Os EJBs funcionam no container EJB. “Enterprise Java Beans é um padrão de modelo de componentes no lado servidor para aplicações de negócio distribuídas. Objetos de negócios como enterprise beans provêm accesso para um modelo de aplicação para qualquer tipo de cliente. Clientes não Java podem acessar enterprise beans usando CORBA (Common Object Request Broker Architeture) ou interfaces Web services. Embora transparente ao desenvolvedor de aplicação. No passado as empresas construíram seu próprio Middleware com o intuito de se fazer uma solução que fosse adequada às realidades da empresa mas esbarraram nos seguintes inconvenientes: . Clientes Java podem acessar os enterprise beans através das interfaces padrões (Home e Remote). Estas máquinas antigas. Componentes podem ser migrados para balancear carga sem um cluster de processadores. Estes serviços permitem construir e disponibilizar rapidamente os EJBs.Caso fosse necessário conectar com um outro DBMS que não fosse o que foi feito no projeto original exigia uma reprogramação muito grande principalmente por que poucos sistemas eram três camadas com um foco orientado a MVC (Model-ViewController). O conceito de Enterprise Java Beans não é recente. Partindo deste princípio formamos uma definição de EJB além da já apresentada e cunhada pela SUN.Custo de manter uma equipe de desenvolvimento. trabalham com os monitores transacionais porém de uma forma monolítica e não uma forma distribuída. . que dão forma ao núcleo de aplicações transacionais J2EE. porque as diferentes tecnologias não conversavam satisfatoriamente o custo aumentava ainda mais. porque estes sistemas muitas vezes não eram adequados para a realidade WEB e desta forma o percentual de reconstrução era muito alto e principalmente quando era necessário a construção de pontes (bridges). porém eficientes no papel que se dispuseram a fazer. Algumas aplicações requerem acesso por muitos cliente. um ambiente de runtime dentro de algum servidor J2EE. Em uma aplicação de controle de material didático.

5 .checarQuantidadeMaterial() e entregarMaterial(). os clientes remotos podem utilizar os serviços do controle de material fornecidos pela aplicação. Invocando estes métodos.

Os capítulos seguintes discutem estes tipos de beans mais detalhadamente.2 – Stateful: Com informação de estado Bean (MDB): eans 2 – Message Driven Beans (MDB): Atua como um listener para a API Java Message Service (JMS). Beans eans: 3 – Entity Beans: Representa um objeto de entidade de negócios que existe no armazenamento persistente 6 .1 – Stateless: Sem informação de estado Stateful: 1.Tipos de Enterprise Bean Existem três tipos de enterprise beans. os quais serão estudados aqui neste curso. Bean eans 1 – Session Beans: Executa uma tarefa para um cliente Stateless: 1. processando mensagens assincronamente.

então o desenvolvedor não precisa implementar este tipo de lógica no código do bean. o container. Existem diversos tipos de container como Applet Container. intercepta a invocação para assegurar: persistência. Como o container gerencia todos esses fatores automaticamente para o bean. acesso aos recursos de pool. porque o mesmo gerencia todo o aspecto de um enterprise bean em um ambiente de execução. persistência. baseado em componentes. EJB Container. 7 . transação e segurança pelas propriedades do Bean para toda a operação que o cliente executar. O modelo de programação define um conjunto de perfis. o mesmo tem que atender as especificações descritas destes containers. Baseado na definição de EJB poderíamos definir um container acrescentando que os componentes rodam em um programa que define o funcionamento de runtime (tempo de execução) da especificação. através de um conjunto de contratos. concorrência. Se o tipo de container define o padrão de objetos distribuídos então estaremos falando em EJB Container.Uma arquitetura com Enterprise Java Beans A arquitetura EJB define um modelo de sistema distribuído. Para um componente rodar nestes ambientes. que definem uma plataforma comum de desenvolvimento. Inicialmente. Veremos este arquivo mais adiante. O container isola o enterprise bean a partir do acesso direto das aplicações clientes quando essas invocam uma chamada remota a um Enterprise Bean. segurança. O principal objetivo destes contratos é assegurar a portabilidade através dos vendedores de servidores de EJB ou de componentes. etc. os quais são definidos em um arquivo chamado deployment descriptor. transações. Um Enterprise Bean não pode rodar fora de um container. Container de EJB O conceito de Container na arquitetura J2EE define um conjuto de componentes que atendem uma especificação. O desenvolvedor pode focar nas as regras de negócio enquanto o container cuida dos serviços solicitados pelo bean. enquanto suportam um rico conjunto de funcionalidades. por exemplo: o acesso remoto ao bean. WEB Container.

Figura 1-1: Arquitetura de um sistema com EJBs O container gerenciará muitos beans simultaneamente do mesmo modo que o Web Container gerencia muitos servlets. portanto as aplicações cliente desconhecem completamente as atividades do container. Para isto o Enterprise Bean interage com o container através de três mecanismos: · Métodos de CallBack: Todo EJB implementa uma interface Enterprise Bean. Um Enterprise Bean depende do container para qualquer serviço que necessite. Esta decisão pode ser de acordo com o número de acessos ao bean. Quando o cliente invoca um método na interface remota o container simplesmente revitaliza o bean para servir a requisição. pode ser armazenado a partir da memória em algum outro mecanismo que varia entre tipos de EJB (Session . Quando um bean não está sendo usado. Para reduzir o consumo de memória e processamento. o container vive entre o cliente e o bean. por exemplo. Se um Enterprise Bean necessita acessar uma conexão com outro Bean tudo é feito da mesma forma que um cliente comum passando pelo container. ou possivelmente o eliminará da memória quando o container decidir que o bean não é necessário ficar no pool. enquanto a referência remota fica intacta. deixando o processo totalmente transparente para a aplicação cliente. Cada método callback 8 . o pool de recursos do container gerencia os ciclos de vida de todos os beans com muito cuidado. Um bean que não está em uso. Entity e Message Driven Bean) no servidor. sendo os métodos da interface chamados de métodos de callback. Devido ao fato de que aplicações clientes não têm acesso direto aos beans. o container colocará no pool o bean para ser reutilizado por outro cliente.

A interface EJBContext provê métodos para interagir com o container tanto que o bean pode requisitar a informação sobre o seu ambiente como a identificação do cliente ou o status de uma transação ou pode obter referências remotas para ele mesmo. O JNDI ENC permite um bean acessar recursos como conexões JDBC. Todo bean automaticamente tem acesso para um sistema especial chamado Enterprise Naming Context (ENC). o qual é uma referência direta para o container. · JNDI (Java Naming and Directory Interface): JNDI é uma extensão da plataforma Interface): Java para acesso a sistemas como LDAP (Lightweight Directory Access Protocol). porém com anotações os nomes dos métodos não mais são importantes e podem variar.). Os métodos de callback dão chance ao bean de fazer algum processamento antes ou depois de algum evento gerado pelo container. e propriedades específicas para aquele bean. persistência. sistemas de arquivo. Isto é feito internamente. A notação antes do nome do método é que irá dizer qual dos métodos do ciclo de vida que o mesmo representa. · EJBContext Interface: Todo EJB obtém um objeto de contexto de EJB. outros enterprise beans.alerta o bean de um diferente evento no seu ciclo de vida e o container invocará estes métodos para notificar o Bean quando os eventos acontecem (criação. Por exemplo @javax. etc. Até a versão 2.annotation.PostConstruct será utilizado para anotar um método como sendo o método a ser executado após a costrução de um Session Bean. O ENC é gerenciado pelo container e acessa os beans usando JNDI.1 os EJBs deveria seguir uma nomenclatura exata para métodos do seu ciclo de vida. porém como já dissemos a programação é a mesma que a de um cliente comum. 9 . remoção. etc.

Para montar uma aplicação J2EE. você deve fornecer os seguintes arquivos: 1) Descritor de implantação (deployment descriptor): Um arquivo XML que especifica as informações sobre o bean. você empacota um ou mais módulos – como arquivos JAR EJB – em um arquivo EAR que contém o arquivo JAR EJB do bean e outros arquivos. 10 . também implanta o enterprise bean no servidor J2EE. Um arquivo JAR EJB é responsável e pode ser usado por diferentes aplicações. Para acesso local. o módulo que arqmazena o enterprise bean. Estas interfaces serão estudadas mais adiante. Você empacota os arquivos da lista anterior em um arquivo JAR EJB. como seu tipo de persistência e atributos de transação. 4) Classes auxiliares (helper classes): Outras classes necessárias para a classe do enterprise bean. a interface local é necessária. Isto pode ser feito via anotações. Porém se o arquivo XML for fornecido as configurações postas no mesmo irão sobrescrever as anotações 2) Classe do enterprise bean (enterprise bean class): Implanta os métodos definidos nas interfaces local e/ou remota 3) Interfaces: A interface remota é necessária para o acesso remoto.O Conteúdo de um enterprise bean Para desenvolver um enterprise bean. como classes de exceção e de utilitários.

Nenhuma codificação adicional é necesária. por exemplo. . e um descritor de implantação são montador em um módulo e adicionados à aplicação J2EE.Cada arquivos WAR contém um descritor de implantação. Dentro deste arquivo EAR normalmente você adiciona arquivos Web Archive (WAR) e JAR. declara atributos de transação e autorizações de segurança para um enterprise bean. 11 . arquivos do enterprise beans e arquivos relacionados . Cada componente. . arquivos do componente Web e recursos relacionados.xml que descreve configurações de implantação de um componente. os arquivos de classes para o cliente da aplicação e arquivos relacionados. dependendo das exigências do projeto. enterprise bean ou web.Cada arquivo JAR do cliente da aplicação contém um descritor de implantação.Empacotamento da aplicação Os componentes J2EE são empacotados separadamente e agrupados em uma aplicação J2EE para implantação. Um arquivo EAR é um arquivo Java Archive (JAR) padrão com uma extensão .Cada arquivo JAR EJB contém um descritor de implantação. A utilização de módulos e arquivos EAR possibilita a montagem de várias aplicações J2EE diferentes usando alguns dos mesmos componentes. Um descritor de implantação é um documento XML com uma extensão . seus arquivos relacionados com os arquivos GIF e HTML ou classes de utilitários do lado servidor. No momento de execução. elas podem ser alteradas sem modificar o código-fonte do bean. é apenas a questão de montar os vários módulos J2EE em arquivos EAR J2EE. Uma aplicação J2EE é composta por módulos de componentes do cliente da aplicação. Um descritor de implantação do módulo do enterprise bean. A solução empresarial final pode usar uma aplicação J2EE ou ser composta de duas ou mais aplicações J2EE. Uma aplicação J2EE com todos os seus módulos é entregue em um arquivo Enterprise ARchive (EAR). Uma aplicação J2EE e cada um de seus módulos possuem seus próprios descritores de implantação. Como as informações do descritor de implantação são declarativas. o servidor J2EE lê o descritor de implantação e age sobre o componente adequadamente.ear.

Iremos utilizar aqui um servidor J2EE gratuito chamado JBoss. Em terceiro lugar. Em primeiro lugar porque o container EJB fornece serviços a nível de sistema aos EJBs. Links interessantes: JBoss: http://www. ou UI). Em segundo lugar. porque os EJBs são componentes reutilizáveis. o desenvolvedor do cliente pode focar na apresentação do cliente(User Interface.netbeans. Estas aplicações podem funcionar em qualquer servidor J2EE compatível.com/javaee 12 . Existem muitos servidores J2EE disponíveis hoje no mercado.não o desenvolvedor EJB -. O container EJB -. o desenvolvedor EJB pode se concentrar em resolver problemas de negócio.org NetBeans: http://www.Benefícios da utilização de EJBs Por diversas razões. O desenvolvedor do cliente não tem que codificar as rotinas que executam regras de negócio ou acesso a bases de dados.sun. porque os EJBs . Servidores estes gratuitos ou pagos.jboss.org Sun: http://java. os EJBs simplificam o desenvolvimento de aplicações grandes e distribuídas. o integrador da aplicação pode construir aplicações novas com EJBs existentes.é responsável por serviços a nível de sistema tais como a gerência de transação e a autorização de segurança. Em conseqüência.contêm a lógica do negócio da aplicação. um benefício que é particularmente importante para os clientes que funcionam em dispositivos pequenos.e não os clientes . os clientes são mais finos.

mas suas localizações permanecerão transparentes para os clientes. Com apenas algumas linhas do código. Estes clientes podem ser magros (thin client). 13 . A aplicação terá inúmeros clientes. As transações são necessárias para assegurar a integridade dos dados. 3.Quando usar EJBs Você deve considerar o uso de EJBs se sua aplicação tiver alguns dos seguintes requisitos: 1. Não somente podem os EJBs de uma aplicação funcionar em máquinas diferentes. os mecanismos que controlam o acesso concorrente de objetos compartilhados. váriados e em grande número. Para acomodar o crescimento do número de usuários. os clientes remotos podem facilmente encontrar EJBs. 2. Os EJBs suportam transações. você talvez precise distribuir os componentes de uma aplicação em múltiplas máquinas. A aplicação deve ser escalável.

Resumidamente abaixo os três tipos diferentes de EJBs. São divididos em Stateless Session Bean e Stateful Session Bean 2.Tipos de EJBs Um componente EJB possui três tipos fundamentais: entity beans session beans e beans. Entity Beans: representa um objeto de entidade de negócio que existe no armazenamento persistente. beans. Pode representar um serviço Beans: (negócio). Session Beans: executa uma tarefa para um cliente. Message Driven Beans: é um listener para a API Java Message Service (JMS). um item de iventário. na qual especificaremos estes tipos mais tarde. um ENTITY BEAN modela conceitos de negócios que podem ser representados por nomes. discutem cada tipo mais detalhadamente. message drive beans Como regra geral. Beans: processando mensagens de modo assíncrono. como um comprador. 3. 14 . SESSION BEANS são uma extensão da aplicação cliente e são responsáveis por modelar processos ou tarefas (ações) e MESSAGE DRIVE BEANS que são um tipo de bean que se assemelha ao Session Bean e que são acessados a partir de um sistema de mensagens pelo JMS (Java Message Service). Em outras palavras entity beans modelam objetos do mundo real. Os capítulos seguintes 1. um equipamento.

JBoss Web Site: http://labs. "The Java EE 5 Tutorial". 760 p. O'Reilly.sun.com/portal/jbossejb3. 15 .com/javaee/5/docs /tutorial/doc) Consultado em 16/04/2007.para Convenções de nomes para EJB Em função dos enterprise beans serem compostos de múltiplas partes. 3 . 5 ed. Bill and MONSON-HAEFEL. é importante seguirmos uma convenção de nomes nas suas aplicações.0". Eric et al. Item Nome de um JAR para um EJB (DD) Classe Enterprise Bean Interface Remote Interface Local Sintaxe <nome>JAR <nome>Bean <nome>Remote <nome>Local Tabela 1-1: Nomenclatura para EJBs Exemplo CursoJAR CursoBean CursoRemote CursoLocal OBS: DD significa que o item é um elemento “deployment descriptor” do bean. (http://java. Richard. A tabela abaixo mostra estas convenções.BURKE. 2 . Consultado em 15/04/2007.jboss. "Enterprise JavaBeans 3. Bibliografia 1 .JENDROCK. 2006.

Sign up to vote on this title
UsefulNot useful