Introdução
Basicamente, o EJB define uma arquitetura de componentes multi-plataforma para o desenvolvimento de aplicações Java, muiti-tier, distribuídas, escaláveis e orientadas a objetos.
O objetivo da arquitetura EJB é facilitar o trabalho do desenvolvedor para que ele não tenha que se preocupar com diversos aspectos de infra-estrutura.
Tipos
Existem 3 tipos de EJBs (objetos distribuídos):
1. Session Bean – é o tipo mais simples de EJB, pode ter estado (stateful) ou não ter (stateless).
2. Entity Bean – mapeam tabelas de um banco de dados relacional através de um arquivo de mapeamento. Na prática cada objeto entity representa uma linha de uma tabela. Existe uma linguagem de query específica para buscar entitys chamada EQL (Entreprise Query Language).
3. MDB – são consumidores assincronos de mensagens de filas / tópicos JMS.
Na teoria, o uso de EJBs tornaria mais fácil escrever aplicações de empresariais como componentes provendo um conjunto de serviços automáticos para suportar aplicações transacionais, o que não acontece na prática.
O EJB é um dos principais componentes da plataforma J2EE (Java 2 Enterprise Edition). É um componente do tipo servidor que é executado no container para EJB do servidor de aplicação. Os principais objetivos da tecnologia EJB são fornecer um rápido e simplificado desenvolvimento de aplicações Java baseado em componentes distribuídas, transacionais, seguras e portáveis.
Atualmente ele encontra-se na versão 3.0 e o seu futuro é definido conjuntamente entre grandes empresas como Sun, IBM, Oracle e HP como também por uma vasta comunidade de programadores numa rede mundial de colaboração sob o portal do JCP.
A grande mudança entre a versão 2.1 e a versão 3.0 é a introdução de anotações Java. As anotações facilitam o desenvolvimento diminuindo a quantidade de código e o uso de arquivos de configuração XML.
A plataforma JEE provê algumas facilidades dedicadas à camada de lógica de negócio e para o acesso a banco de dados. Através do EJB o programador utiliza a infraestrutura do servidor de aplicação voltada para o desenvolvimento de aplicações de missão crítica (de alta importância para a empresa) e de aplicações empresariais em geral.
Figura: Visão sobre as camadas de uma aplicação JEE.
Especificação
De acordo com a especificação (JSR 220), o padrão EJB define quais serviços e como estes serviços deverão ser disponibilizados à aplicação:
* Persistência
* Processamento de transções
* Controle de concorrência
* Gerenciamento de eventos usando o Java Message Service (JMS)
* Serviços de nomes e diretório – Naming and directory services (JNDI)
* Segurança ( Java Cryptography Extension (JCE) e JAAS )
* Deployment de componentes de software em um servidor de aplicações
* Chamada remota de procedimentos via RMI-IIOP
* Exposição de métodos de negócio em forma de Web Services
Links Úteis
http://jcp.org/en/jsr/detail?id=220
http://java.sun.com/products/ejb/
Tópicos relacionados: JMS, JSR, JCP, JEE