De que se trata o artigo:

Neste artigo estudaremos os EJBs Session Beans Stateful e Stateless, detalhando a estrutura do seu ciclo de vida, dos métodos de callback, do Timer Service e dos interceptadores internos e externos.


Para que serve:

Para aplicarmos os recursos que os Session Beans disponibilizam, devemos entender seu funcionamento para utilizarmos corretamente em nossos projetos. Veremos em detalhes os recursos mais utilizados dos Session Beans para criarmos aplicações com melhor performance e manutenibilidade.

Em que situação o tema útil:

Ao adotar anotações, injeção de dependências e inversão de controle, os Session Beans trouxeram grandes facilidades para seu uso. Neste artigo iremos aproveitar estas facilidades para demonstrar como desenvolver código útil para: agendamento de serviços para limpeza de tabelas temporárias e envio de mensagens, criar regras de auditorias, implementar logs com eficiência, criar sessões entre a aplicação e o cliente aproveitando os recursos dos métodos de callback, entre outros.

Stateful e Stateless Session Beans:

Neste artigo iremos entender o funcionamento do ciclo de vida dos Session Beans Stateful e Stateless, os métodos de callback, como trabalhar com o Timer Service e como podemos interceptar métodos com Interceptadores internos e externos.

Neste artigo aplicaremos recursos preciosos dos Stateful Session Beans e Stateless Session Beans da especificação Java EE 5. Veremos a estrutura do ciclo de vida dos Session Beans, os métodos de callback, o Timer Service nos Stateless Session Beans e por último interceptadores internos e externos.

Porém, porque não utilizar a badalada versão 6 do Java EE? Por que nosso objetivo é apresentar um artigo para ser empregado em projetos de imediato e não ficar apenas na teoria. Os novos projetos do mercado geralmente implementam a versão Java EE 5 ou anterior, pois os grandes servidores como o IBM WebSphere 7, Oracle WebLogic 11g e o JBoss 5 não implementam a nova especificação, e quando as novas versões implementarem, até que os arquitetos de software iniciem a estruturação dos novos sistemas utilizando a versão Java EE 6 vai levar um tempo. Por isso, usaremos o EJB 3.0 em nossos exemplos para entendermos o funcionamento dos Session Beans, criar serviços com agendamento de execução e a interceptar métodos com interceptadores.

A versão 3.0 dos EJBs trouxeram grandes facilidades no uso de Session Beans ao adotar anotações, injeção de dependências e inversão de controle. No entanto, iniciantes em EJBs, sem um estudo direcionado, geralmente os utilizam sem entender os seus recursos. Este é um grande erro, pois é importantíssimo conhecer o ciclo de vida, os métodos de callback, o serviço de Timer e como interceptar métodos, para compreender o funcionamento dos Session Beans e possibilitar o desenvolvimento de aplicações com melhor performance e código limpo.

Stateful Session Beans: Ciclo de vida e métodos de callback

Primeiramente vamos refrescar a memória lembrando que o EJB container garante o estado conversacional do Stateful Session Bean, mantendo um relacionamento de um-para-um, entre o cliente e a instância do bean. Para que isso seja possível, é alocado um espaço de memória para guardar as informações do cliente (veja a Figura 1). Porém, isso resulta em reservar memória para cada cliente que solicita uma instância do bean, tendo um gasto extra de processamento e espaço em memória.

A instância do bean alocado na memória irá existir até que seja removida pelo cliente ou por time-out.

Figura 1. Relacionamento um-para-um alocado na memória.

Vamos imaginar um sistema de e-commerce com 80.000 clientes solicitando instâncias do nosso stateful session bean, que é, por exemplo, um carrinho de compras. Certamente, não será preciso manter todos os carrinhos ao mesmo tempo na memória principal, pois isso seria muito caro e desnecessário. Deste modo, os carrinhos que estão ociosos podem ser alocados, por exemplo, na memória secundária, desativando a instância do bean, ou como dizemos, a instância do bean será “adormecida”. Quando o cliente solicitar novamente informações do carrinho, a instância relativa ao cliente que estava desativada será “reativada” e retornará para a memória principal pronta para uso. O que acabamos de descrever é uma fase importante do ciclo de vida (veja a ...

Quer ler esse conteúdo completo? Tenha acesso completo