Académique Documents
Professionnel Documents
Culture Documents
Aplicabilidade do EJB
André Ricardo Gnhoato1, Antônio Carlos Gimenez Junior1, João Carlos Varão Siqueira1
1
Instituto de Informática –Universidade Tecnológica Federal do Paraná – Campi Medianeira
2. Histórico
3. Porque EJB?
Inúmeros sites estão funcionando usando Java sem usar a tecnologia EJB. Os
desenvolvedores estão utilizando servlet/JSP (Java Server Pages) e gerenciando transações
utilizando commit e rollback que está embutido no JDBC sem a ajuda de servidores de
aplicação. Mas ao fazer isso, os desenvolvedores de aplicativos são confrontados com muitos
desafios. Alguns dos mais importantes estão em gerenciar concorrência, persistência e as
transações. Como resultado, os desenvolvedores têm que quer desenvolver um código
proprietário ou comprar suporte de frameworks para resolver.
Esses problemas são resolvidos usando Enterprise JavaBeans (EJB). O uso de EJB’s
permite aos desenvolvedores concentrar-se na lógica de negócios, deixando a parte de
infraestrutura de codificação e lógica, middleware para o EJB, assim os desenvolvedores se
tornam mais produtivos e eficientes.
Como a maioria das outras tecnologias, EJB não fornece uma solução única para todos
os problemas. A utilização de enterprise beans traz vantagens e desvantagens. No entanto, as
vantagens superam as desvantagens, especialmente para aplicações mais complexas que
exigem um modelo de persistência distribuído robusto e sofisticado.
Mais uma vez, não é toda aplicação que considera-se o EJB um ambiente beneficio.
Para ajudá-lo a decidir se esta tecnologia é adequada, este artigo fornece algumas razões para
considerar a usá-lo.
4. Distribuição de Objetos
Para muitos futuros clientes, o ponto chave é conseguir uma total independência de
plataforma e uma implementação do servidor de aplicativo. A arquitetura EJB, que é uma
arquitetura de componentes padrão da indústria, pode ajudar a atingir esses objetivos. O
desenvolvimento Enterprise Beans para WebSphere geralmente podem ser implantado em
servidores de aplicativos que não seguem o padrão IBM, e vice-versa. Isso foi demonstrado
durante a conferência JavaOne junho de 1999, onde a aplicação de venda de carros foi
implantada em vários pontos de venda com a utilização de um servidor de aplicação de
vendas. Enquanto que no curto prazo muitas vezes é mais fácil e mais rápido para tirar
proveito dos recursos que podem ser contrários à normalização, mas a padronização oferece
as melhores vantagens em longo prazo.
Além disso, os clientes devem considerar a crescente disponibilidade de ferramentas e
implementações otimizadas do padrão EJB. Porque a maioria dos clientes não está no negócio
de middleware, seus esforços podem ser mais bem orientados para as atividades que estão
mais diretamente relacionados aos seus negócios.
6. Persistência de objetos
A tecnologia EJB permite uma clara separação da lógica de negócios e do acesso do banco de
dados. A lógica comercial é independente do esquema do banco de dados e pode ser
implantado em organizações com esquemas de banco de dados diferente ou mudando.
8. Gerenciamento de transações
Acesso concorrente a dados compartilhados pode ser uma das maiores dores de cabeça a um
desenvolvedor. A consideração de todas as questões relacionadas como o travamento do banco
de dados, simultaneidade, ou mesmo perda de integridade dos dados pode levar à criação de
grandes esquemas complexos para gerenciar o acesso a dados compartilhados no nível de
banco de dados.
EJB trata automaticamente essas ameaças complexa do projeto e simultânea questões
partilhada de dados. Como mencionado anteriormente, o container EJB fornece todos os
serviços de transações necessárias para o controle de acesso a dados de back-end de forma
transacional.
Muitas aplicações requerem a capacidade de acessar múltiplas fontes de dados para exemplo,
um programa pode utilizar os dados em ambos DB2 uma camada intermediária ou banco de
dados Oracle e um mainframe CICS ou IMS sistema acessível através do WebSphere MQ.
O fundamental é que algumas aplicações exigem que esse acesso esteja totalmente
transacional que a integridade dos dados é mantida através de fontes de dados. Por exemplo,
um aplicativo pode exigir que a colocação de um pedido de usuário será composto por
armazenar as informações de forma detalhada em um banco de dados Oracle e,
simultaneamente, colocar uma ordem de transferência com um sistema CICS através do
WebSphere MQ. Se uma a atualização do banco de dados ou o enfileiramento MQ falhar, a
transação inteira deve rolar para trás.
No passado, as únicas opções com as quais a construção de sistemas como estes foram
monitores de transação, tais como Encina, CICS, ou smoking, que costumava ter
interfaces não padronizadas era necessário desenvolvimento em linguagens como COBOL,
C++ ou C.
EJB suporta múltiplas transações simultâneas, com total compromisso e
capacidade de reversão em múltiplas fontes.
Muitas vezes, um único pedido terá vários tipos de clientes que precisam de acesso a mesmo
conjunto de informações. Por exemplo, um aplicativo pode ter um web-based HTML front-
end para os clientes externos, e um mais completo de aplicativos Java front-end para usuários
internos. Tradicionalmente, este problema tem sido resolvido pelo cancelamento duas versões
do mesmo aplicativo que compartilham os mesmos dados de fontes (Tabelas). No entanto,
esta não é eficiente tanto em tempo de programação ou utilizando o banco de dados, se
bloqueios múltiplos bancos de dados poderia ser realizada de uma só vez.
A solução de EJB para este problema é colocar dados comum e de lógica de negócios
em um conjunto único de EJBs que são acessados por diferentes tipos de cliente (por
exemplo, HTML / servlet e aplicação). EJBs de controle de acesso aos dados de back-end e
gerir internamente as transações correntes e bloqueio de banco de dados. Isso reduz o esforço
de programação total, eliminando a duplicidade de código na aplicação e por reduzindo a
quantidade de esforço despendido na escrita lógica de controle de banco de dados.
Certos tipos de aplicações têm restrições de segurança difíceis de programar. Por exemplo,
solicitações de segurança para o acesso aos dados do usuário, a fim de atender às normas da
empresa.
De certa forma não havia uma maneira rápida, prática e eficiente para restringir o
acesso a um objeto ou a métodos de um determinado usuário utilizando-se EJB, porém, esta
complexidade se apresenta nas versões anteriores a versão 3.0, que tornou sua manipulação e
processamento mais simples, pois é efetuada à partir de “anotações”.
Para realizar esta tarefa, realizava-se a restrição de acesso ao nível do banco de dados,
e depois se verificava os erros lançados a nível de conexão (JDBC), ou restringindo o acesso
ao nível da aplicação onde cada usuário possui sua área de trabalho.
Contudo, são criados grupos de usuários que podem ser criados e autorizados ou até
mesmo negados os seus direitos de execução. No WebSphere1, esses mesmo grupos de usuário
podem ser concedidos ou negados o acesso aos recursos da Web (Servlets, JSPs e páginas
HTML).
1
Websphere é o nome de uma família de softwares da IBM para criação e execução de aplicações baseadas no
padrão Java J2EE, fornecendo também infra-estrutura para integração de aplicações corporativas.
15. Integração com CORBA
EJBs são construídos sobre uma tecnologia que é uma combinação de Java Remote Method
Invocation (RMI) e Component Object Request Broker (CORBA).
Clientes acessam usando RMI sobre IIOP2. Isso permite que puramente clientes
CORBA possam acessar EJBs como clientes EJB.
Ao se criar uma EntityBeans no servidor, está se executando não somente uma função,
mas várias, como segue: Enterprise Bean Provider, Application Assembler, EJB Deployer,
EJB Server Provider, EJB Container Provider, Systems Administrator.
O EntityBean é uma classe Java com a anotação @Entity, normalmente o EJB envia o
objeto EntityBean para uma tabela no banco de dados utilizado.
O nome desta tabela também é definido na classe Bean através da anotação @Table,
sendo que cada coluna desta tabela é um atributo da classe.
As anotações servem para atribuir funções à métodos e classes. A anotação @Id
colocada antes do método define que aquele atributo será a primeira coluna da tabela e o
identificador desta.
Implementação:
@Entity
@Table(name = "Cliente")
public class Cliente implements Serializable{
private int id;
private String nome;
public Cliente () { }
// continua a implementação...
}
Código-fonte 1: Criação EntityBean
2
O protocolo IIOP (Internet Inter-Orb Protocol) é uma implementação do GIOP para o protocolo de rede
TCP/IP. Também pode ser descrito como uma realização concreta das definições abstratas do GIOP.
A aplicação EJB é representada por uma estrutura de projeto (.ear) que contém os
EntityBeans em um diretório (.par), os SessionBeans e outros componentes que não tratam
persistência ficam armazenado no diretório (.ejb3), entretanto, no diretório META-INF tem-se
o arquivo de configuração da aplicação (aplication.xml), por fim, a camada web é
representada pelo diretório web.war.
Desta forma: