Enterprise Java Beans 3.1

Após sua versão 3.0, que revolucionou a criação de aplicações Java EE distribuídas, surge o EJB 3.1, ainda mais fácil de utilizar e com novos recursos promissores.

Atenção: esse artigo tem um vídeo complementar. Clique e assista!

De que se trata o artigo:

O artigo explora alguns dos novos recursos da Java EE 6, especificamente o que há de novo no EJB 3.1 (JSR 318). Apresenta um detalhamento das melhorias e novidades da tecnologia EJB, com exemplos de aplicação em cenários reais, códigos e dicas de arquitetura.

Para que serve:

Fornecer uma atualização das novidades do EJB 3.1 para desenvolvedores, arquitetos, interessados na tecnologia ou aqueles que, de alguma forma, estejam envolvidos em projetos que utilizam EJBs.

Em que situação o tema é útil:

O tema é útil para empresas que utilizam EJBs e desejam manter seus produtos com tecnologia de ponta ou, até mesmo, melhorar sua produtividade. É importante também para profissionais que desejam ampliar seus conhecimentos atualizando-se com o que está por vir na tecnologia.

Enterprise Java Beans 3.1:

A nova tecnologia traz melhorias muito importantes em recursos já existentes, dentre os quais se destacam o serviço de agendamento (Timer Service) e a padronização de nomes JNDI globais. Adicionalmente, há alguns recursos novos que ampliam as possibilidades de uso dos componentes EJB, especialmente o novo tipo de componente Singleton Bean.

Um ponto importante que pode ser percebido com o advento da especificação da nova tecnologia, bem como com a motivação da comunidade, é a forte preocupação com a simplicidade de uso. Agora, as interfaces passam a ser opcionais, há a possibilidade de chamadas assíncronas de forma simplificada e pode-se implantar EJBs na camada web.

Adicionalmente, há a possibilidade de se utilizar EJBs no ambiente Java SE e também contar com versões mais leves de servidores (EJB Lite).

Este artigo apresenta os novos recursos disponíveis na tecnologia Enterprise Java Beans 3.1. Foi realizado um estudo da especificação (JSR 318) de modo a cobrir e esclarecer tais novidades, com a preocupação de fornecer exemplos reais e apresentar dicas baseadas na experiência com a arquitetura Java EE.

Para aqueles que já conhecem EJBs, é uma ótima oportunidade de se atualizar, para os que estão iniciando, é um momento igualmente oportuno, afinal, o uso dessa tecnologia está mais fácil do que nunca.

Dentre as inovações trazidas pela nova tecnologia, esse artigo destacará:

Não deixe de ler nessa edição a entrevista sobre Java EE 6 e EJB 3.1 realizada no JavaOne 2009 com o especialista Reza Rahman.

Java EE 6

Java EE é a plataforma Java para criação de aplicações web e aplicações corporativas distribuídas de larga escala (com uso de EJBs). Essa tecnologia possui uma série de aspectos para a criação de sistemas de qualidade, tais como: segurança, performance, distribuição, concorrência (multi-threading), escalabilidade, controle transacional, persistência e outras tantas necessidades arquiteturais. A idéia central é que o desenvolvedor deve se preocupar apenas com a regra de negócio e com a aplicação, deixando que a plataforma Java EE cuide da infra-estrutura. Com ela é possível criar aplicações de forma independente de plataforma e de servidor, obtendo o que se chama de WODA (Write Once Deploy Anywhere), ou seja, você escreve a aplicação uma única vez e implanta em qualquer servidor compatível.

Java EE 6 (JSR 316) possui recursos promissores que inovam ainda mais a plataforma tanto no mundo web quanto EJB, e é claro, com o compromisso de manter a compatibilidade com as versões anteriores. Essa é uma especificação guarda-chuva, ou seja, relaciona outras especificações, sendo que em todas há a preocupação de simplificar ainda mais o trabalho de desenvolvimento e implantação das aplicações.

EJB 3.1

Enterprise Java Beans (EJBs) é a tecnologia Java padronizada para a criação de componentes em uma arquitetura distribuída, escalável, confiável e robusta. Em uma aplicação n-camadas com esse tipo de necessidade arquitetural, usualmente utiliza-se EJBs para a camada de negócios. Para executar uma aplicação que utiliza EJBs é necessário um servidor de aplicação, o qual é chamado de contêiner.

Uma das principais e recentes mudanças ocorridas no EJB foi em sua versão 3.0, quando sua utilização se tornou mais simples e produtiva, mantendo todo o poder da tecnologia. Agora, com EJB 3.1 (JSR 318) a curva de aprendizado se torna ainda mais rápida e há recursos que prometem alavancar ainda mais o seu uso.

Glassfish V3

O Glassfish é um servidor de aplicações Java EE maduro, robusto e livre. É a implementação de referência para a especificação do EJB 3.0, e agora do EJB 3.1, em sua versão V3. Todos os códigos aqui tratados já podem ser codificados e testados com o Glassfish. Mas é necessário utilizar uma versão recente (promoted build ou nightly build). A versão aqui utilizada foi a b57, que vem junto com o NetBeans 6.8 M1.

Enterprise Java Beans 3.1

Nos tópicos a seguir serão apresentadas as principais novidades do EJB. A versão 3.1 vem recheada de novidades e melhorias que tornam a tecnologia mais poderosa, produtiva e fácil de aprender. Esse artigo procura detalhar cada um desses novos recursos, com exemplos de código e dicas importantes.

Singleton Beans

Esse tipo de componente EJB segue os preceitos do Design Pattern Singleton, cuja responsabilidade é garantir que exista somente uma instância de uma classe na aplicação. O componente Singleton Bean garante que apenas uma instância do componente existirá e será compartilhada por todos os usuários da aplicação (Figura 1), e o que é melhor, com toda a infra-estrutura fornecida pelo contêiner, como nos demais componentes EJB. Segundo a especificação, em um ambiente distribuído haverá uma instância por JVM, o que merece um pouco de atenção.

Figura 1. Representação de um Singleton Bean

Em muitos cenários há a necessidade de armazenar informações de forma compartilhada a todos os usuários da aplicação. Para isso, na web há o escopo de application, já com EJBs não havia um modo. Uma das formas seria utilizar uma classe Java simples (POJO) contendo atributos estáticos, mas daí surge uma questão: como fica o acesso concorrente (multi-threading) a essas informações, segurança, transação e outros tantos serviços fornecidos pelo contêiner? Singleton Beans se aplicam muito bem a essa necessidade.

Para criar um EJB como Singleton Bean basta utilizar a annotation @Singleton na classe do componente. Veja um exemplo simples na Listagem 1.

Listagem 1. Criação de um componente Singleton

package br.com.globalcode.ejb31; import javax.ejb.Singleton; @Singleton public class SingletonHelloBean implements SingletonHelloRemote { public String getMessage() { return "Hello. Welcome to Singleton EJB 3.1 World."; } }

Outro recurso muito interessante do Singleton Bean é a possibilidade de capturar eventos de callback no âmbito da aplicação, ou seja, executar operações na inicialização e no encerramento de sua aplicação. Para executar uma operação durante a inicialização basta usar a annotation @PostConstruct em algum método desejado para esse propósito, já para o evento de encerramento deve-se utilizar a annotation @PreDestroy. Observe um exemplo desse recurso na "

[...] continue lendo...
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados