segunda-feira, 29 de janeiro de 2007

Java Beans - Mais teoria

Antes de postar o exemplo prático, vou explicar algumas coisas, para o próximo post colocarmos des de o começo a mão na massa.
Segundo o tutorial oficial da Sun sobre jEE, Enterprise Java Beans (vou chama-los apenas de Beans até o final desse post) são componentes do lado do servidor que encapsulam a lógica da aplicação. Existem dois tipos principais de Beans, os beans de sessão e os beans orientados a mensagens.


Beans de Sessão

O que são Beans de Sessão?
Beans de sessão são componentes que estão ligados as chamadas de um usuário específico, ou seja, estão ligados a uma "conexão" com o servidor, conhecendo que é o usuário que está requisitando seus serviços.

Os benas de sessão podem ser divididos em dois tipos, Statefull e Statelless.

Stateful Bean: Esse tipo de bean, fica alocado para uma determinada sessão do cliente até que ela seja terminada. É um tipo de bean util para quando precisamos guardar o estado da seção, ou seja, quando a "operação" realizada pelo bean não termina em apenas uma chamada. Um exemplo prático disso seria um "wizzard" que vai executando ações passo a passo, ou mesmo um carrinho de compras.

Stateless Bean: Esse bean tem acesso aos dados da sessão de usuário que o está chamando, no entanto, esse estado é perdido quando sua "operação" terminar. O Stateless Bean não fica vinculado a uma seção específica, ele pode ser reaproveitado por outro usuário, sendo assim menos oneroso para o servidor. Em uma aplicação convencional, a maioria dos Beans são stateless, mas cabe a cada desenvolvedor determinar quando usar Stateful ou Stateless.


Beans Orientados a Mensagem (Message-Driven Beans)

Esses beans funcionam como listeners para serviços de mensagens, como a JMS (Java Message API). Não vou entrar em detalhes sobre serviços de mensagens agora, pois pretendo mais para frente, depois que já estivemos dominando os Session Beans dedicar um tempo apenas para falar sobre Mensagens.



Arquitetura de um EJB

Um EJB é composto por:

  • Interface Remota
  • Implementação do Bean

Interface Remota (Business Interface): A interface remota é uma Interface (considerando a definição de interface da linguagem java) que será a visualização que o cliente tem do nosso Bean. Somente os metodos definidos nessa interface estarão disponíveis para o cliente. A interface remota é desenvolvida seguindo os padrões de RMI, implementando a interface EJBObject (que por sua vez implementa a interface Remote do RMI).


Ex:
public interface HelloRemoteInterface extends EJBObject {

// Metodo que executa alguma coisa para o cliente
public String doSomething() throws RemoteException;

}

Com o uso de annotations ficou ainda mais simples implementarmos as interfaces remotas. Basta utilizarmos a annotation acima da interface:

Ex:
@Remote
public interface HelloRemoteInterface {

// Metodo que executa alguma coisa para o cliente
public String doSomething() throws RemoteException;

}



Implementação do Bean
A implementação do Bean nada mais é do que a lógica dos metodos definidos pela interface remota.
Pra criarmos o Bean, basta que implementemos a interface remota e criemos a logica pertinente a cada metodo. Tambem podemos usar Annotations para definir o Bean:

Ex.

@Stateless
public class HelloBean implements HelloRemoteInterface {

public String doSomething() {
return "Something done";
}

}




Bom.. essas são os dois componentes básicos de um JavaBean.

No próximo post já ensinarei como fazer o deploy de um bean no nosso servidor de aplicação, e tambem a criar os "descritores" do bean.


Até lá!

1 comentários:

Fabio Santiago disse...

Olá, estou acompanhando seus pots, parabéns, estou adorando esse curso de JEE.

Sugiro uma correção aqui:

ERRADO - "...que por sua vez implementa a interface Remote do RMI)..."

CERTO - "...que por sua vez EXTEND a interface Remote do RMI)..."