enterprise java beans (i)diego/disciplinas/2014_2/... · enterprise java beans (iii) • o j2ee...

41
Enterprise Java Beans (I) Professor: Diego Passos UFF [email protected] Baseado no material original cedido pelo Professor Carlos Bazilio

Upload: others

Post on 04-Aug-2020

13 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

Enterprise Java Beans (I)

Professor: Diego Passos

UFF

[email protected]

Baseado no material original cedido pelo Professor

Carlos Bazilio

Page 2: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

Java Beans

• Conceito já discutido na disciplina.

• São classes Java que seguem uma convenção.

– Classes contendo construtor padrão sem argumentos.

– Classes contendo métodos get/set para todos os atributos.

– Podem conter outros métodos e construtores também.

• Usadas no desenvolvimento de páginas JSP.

– Ações padrão.

• Usadas no desenvolvimento de aplicações JSF.

– Backing beans e Model beans.

– Têm seus atributos mapeados para componentes de interface.

Page 3: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

Java Beans: Cenário Típico JSF (Visto Até Agora)

Page 4: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

Java Beans: Cenário Típico J2EE

Page 5: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

Enterprise Java Beans

• API para especificação de aplicações multi-camadas, baseadas em componentes, distribuídas e escaláveis.

• É a base da plataforma J2EE.

• Estende o modelo de componentes Java Beans.

– Beans (potencialmente) distribuídas.

– Suporte para aplicações transacionais.

• Referência: http://java.sun.com/products/ejb

Page 6: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

Enterprise Java Beans (II)

• No modelo de aplicações J2EE, as EJBs implementam a lógica de negócio.

• Outros componentes da aplicação chamam seus métodos para realizar as operações esperadas da aplicação.

• EJBs também fazem o intermédio com as fontes de dados.

• Assim como os componentes web, a implementação de uma EJB roda em um container especial.

– EJB Container.

– Provê vários serviços às EJBs.

• Processamento de transações.

• Segurança.

• Manutenção do ciclo de vida das instâncias das EJBs.

• Gerenciamento de recursos.

Page 7: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

Enterprise Java Beans (III)

• O J2EE define três tipos diferentes de EJBs.

– Beans de sessão.

• Tipicamente não persistente.

• Acessado por um cliente por vez.

• Ciclo de vida tem duração típica de uma sessão (do ponto de vista de um cliente).

• Instâncias podem eventualmente ser reaproveitadas.

• Implementam lógica de negócio da aplicação.

– Beans de entidade.

• Representam dados armazenados em mídia persistente.

– Como uma base de dados em disco.

• Podem ser acessadas concorrentemente.

• Implementam os dados da aplicação.

Page 8: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

Enterprise Java Beans (IV)

– Beans orientadas a mensagens.

• Modelo de requisição e resposta assíncronas.

• Cliente envia mensagem JMS.

• Mensagens são mapeadas para operações (métodos) na EJB.

• Resultados das operações são mapeados de volta em mensagens JMS.

Page 9: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

EJB – Mais um Exemplo de Arquitetura

Servidor J2EE

Contêiner EJB Contêiner Web

Cliente

Beans de

Sessão

Beans de

Entidade

JSP

Tags

Bean

Servlet

RDBMS

Page 10: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

EJB – Servidor de Aplicação

• O gerenciamento de objetos de serviço é uma funcionalidade central de servidores de aplicação, pois permite:

– Fraco acoplamento

• Uma aplicação cliente não precisa instanciar objetos de serviço ou saber o nome das classes de implementação;

• Esta só precisa saber da interface do serviço;

• Permite ao servidor ter alternativas de implementação de serviço sem alteração do código do cliente;

– Independência da rede

• Serviços disponíveis para a maioria dos protocolos de transporte de rede;

• Transparência para o cliente quanto a localização real dos objetos que implementam o serviço;

Page 11: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

EJB – Servidor de Aplicação

• (.. ainda sobre o gerenciamento de objetos de serviço):

– Pool de recursos

• O servidor tem controle de recursos críticos;

• A aplicação cliente não precisa destruir os objetos criados;

• Através de um pool de recursos, o servidor controla o excesso de criação de objetos através do reaproveitamento de recursos.

Page 12: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

EJB - JBoss

• JBoss é um servidor de aplicação JavaEE completo e certificado;

• Robusto, maduro e validado por aplicações em grandes empresas;

• Empresa patrocinadora foi comprada pela RedHat;

• Incorpora outros projetos de software livre, como o Tomcat e o HSQLDB (antigo Hypersonic);

• Primeiro servidor JavaEE a eliminar os processos manuais de geração de stubs e skeletons (herdados do CORBA);

• Qualquer componente pode ser reiniciado, reconfigurado, substituído ou atualizado “à quente”.

Page 13: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

EJB – Jboss (II)

Page 14: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

EJB – Jboss (III)

• Uma aplicação web completa pode ser compactada e instalada através de um arquivo .ear (Enterprise ARchive file);

• Um arquivo .ear conterá os arquivos .jar (EJB’s) e .war que compõe a aplicação web;

• No JBoss, uma aplicação é implantada através do diretório (“<jboss>/server/default/deploy”).

Page 15: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

EJB – Stub e Skeleton

Código do

cliente

Código do

EJB Stub Skeleton

Cliente Servidor

Page 16: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

EJB – Stub e Skeleton (II)

• Em muitos casos, EJBs são acessadas remotamente.

• Internamente, a interação entre cliente e EJB se dá através de RMI.

• Para enviar requisições ao EJB, cliente utiliza uma classe local Stub.

• No lado servidor, além de instanciar o EJB, container instancia uma classe Skeleton.

• Requisições do cliente são passadas ao Stub que as serializa e envia pela rede.

• Skeleton recebe os dados serializados, os transforma em estruturas de dados Java novamente e os repassa ao EJB.

• Na resposta, processo inverso é realizado.

Page 17: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

Interface Cliente e Interface Home

• Note que os conceitos de Stub e Skeleton são transparentes para o cliente.

• Cliente não precisa estar ciente do uso do RMI.

– Ou dos conceitos associados.

• Ao contrário, cliente precisa apenas conhecer a interface para acesso dos métodos do EJB.

– A interface do cliente.

– Define os métodos da lógica de negócio.

• Do lado do servidor, o container precisa também saber como acessar/manipular o ciclo de vida de um EJB.

– Precisa de uma interface específica.

– A interface home.

– Define métodos para gerenciamento do EJB.

Page 18: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

Acessando um EJB

• Do ponto de vista de um cliente, o acesso típico a um EJB é feito através dos seguintes passos:

– Acessar o serviço JNDI do Servidor de Aplicação que contém o EJB.

– Usar o serviço JNDI para obter a interface home para o EJB.

– Usar a interface home para criar (ou encontrar) uma referência ao EJB.

– Usar a interface do cliente para chamar métodos.

• Cliente, portanto, precisa de informações sobre o serviço JNDI do Servidor de Aplicação.

• Precisa também saber sob qual nome a interface home do EJB está armazenada.

• Finalmente, precisa conhecer a interface do cliente associada ao EJB.

Page 19: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

EJB do Ponto de Vista do Container

• Quando um EJB é implementando no container, o desenvolvedor fica encarregado de prover uma série de arquivos.

– A interface cliente.

– A interface home.

– A classe que implementa o EJB.

– Um deployment descriptor do EJB.

• A partir destes arquivos, o container gera automaticamente:

– O stub e o Skeleton (implementações associadas à interface cliente).

– O home (a implementação associada à interface home).

Page 20: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

EJB do Ponto de Vista do Container (II)

(Fonte: “Java Enterprise in a Nutshell”)

Page 21: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

EJB do Ponto de Vista do Container (III)

• O descritor permite que opções de funcionamento do EJB sejam configuradas em tempo de disponibilização.

• Estas opções definem (entre outras coisas):

– Como funciona o ciclo de vida do EJB.

– Opções de segurança e autenticação.

– Serviços providos pelo Container ao EJB.

– Parâmetros de inicialização do EJB.

• Opções permitem que um mesmo EJB possa ser usado em ambientes diferentes.

– Potencialmente, com necessidades diferentes.

– Facilitam a reutilização dos EJBs.

– Reforçam o modelo de EJBs como componentes reutilizáveis.

Page 22: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

EJBs: Acesso Remoto ou Local

• No caso típico de uso de um EJB, este é acessado remotamente.

– Cliente está em uma máquina.

– Container está em outra.

– Interação é feita através da rede.

• Mesmo no caso do cliente e container estarem na mesma máquina, em geral eles rodam em JVMs diferentes.

• No entanto, podemos utilizar as EJBs localmente.

– Isto é, quando cliente e EJB estão na mesma JVM.

– RMI não é necessário.

• Por este motivo, cada uma das interfaces do EJB (cliente e home) pode ter duas versões:

– Local: usada por clientes locais (mesma JVM).

– Remota: usada por clientes remotivos (JVM diferente).

Page 23: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

Exemplo de Implementação de um EJB

• Do ponto de vista do desenvolvedor, tipicamente a implementação de um EJB é feita em várias etapas:

– Definição das interfaces cliente (local e remota).

– Definição das interfaces home (local e remota).

– Implementação do bean.

• Nos próximos slides, veremos como isto pode ser feito para um EJB de exemplo.

– ProfileServer.

– Provê informações sobre usuários identificados por nome.

Page 24: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

Criação da Interface Cliente

• Interface do cliente contém métodos que estão disponíveis para chamada a partir do cliente.

– Métodos que permitem acesso à lógica de negócio da aplicação.

• Podem ser duas versões:

– Local.

– Remota.

Page 25: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

Criação da Interface Cliente (Remota)

import java.rmi.RemoteException;

import javax.ejb.EJBObject;

import com.oreilly.jent.ejb.NoSuchPersonException;

public interface ProfileManager extends EJBObject {

public Profile getProfile(String acctName)

throws NoSuchPersonException, RemoteException;

}

• Interface deve estender a EJBObject.

• Que por sua vez estende a java.rmi.remote.

• Implicitamente faz com que a interface seja uma interface RMI remota.

• Neste exemplo, define um único método: getProfile().

• Retorna uma referência a um Profile (perfil do usuário).

• Poderia haver outros métodos, caso a lógica de negócio demandasse.

Page 26: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

Criação da Interface Cliente (Remota)

import java.rmi.RemoteException;

import javax.ejb.EJBObject;

import com.oreilly.jent.ejb.NoSuchPersonException;

public interface ProfileManager extends EJBObject {

public Profile getProfile(String acctName)

throws NoSuchPersonException, RemoteException;

}

• Repare nas exceções que o método pode disparar:

• NoSuchPersonException: específica da aplicação (usuário não encontrado).

• RemoteException: específica do RMI.

• Denota problemas de comunicação.

Page 27: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

Criação da Interface Cliente (Remota)

import java.rmi.RemoteException;

import javax.ejb.EJBObject;

import com.oreilly.jent.ejb.NoSuchPersonException;

public interface ProfileManager extends EJBObject {

public Profile getProfile(String acctName)

throws NoSuchPersonException, RemoteException;

}

• Último detalhe:

• Tipos dos argumentos e retorno devem ser serializáveis.

• Isso porque eles serão enviados pela rede.

• O tipo String em Java já tem esta característica.

• O tipo Profile (específico da aplicação) terá que ser implementado assim.

Page 28: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

Criação da Interface Cliente (Local)

import javax.ejb.EJBLocalObject;

import com.oreilly.jent.ejb.NoSuchPersonException;

public interface ProfileManagerLocal extends

EJBLocalObject {

public Profile getProfile(String acctName)

throws NoSuchPersonException;

}

• Similar à interface cliente remota.

• Define o mesmo único método.

• Esperado, já que as mesmas funcionalidades do EJB devem estar disponíveis.

• Primeira diferença: estende interface EJBLocalObject.

• Não envolve RMI.

Page 29: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

Criação da Interface Cliente (Local)

import javax.ejb.EJBLocalObject;

import com.oreilly.jent.ejb.NoSuchPersonException;

public interface ProfileManagerLocal extends

EJBLocalObject {

public Profile getProfile(String acctName)

throws NoSuchPersonException;

}

• Outra diferença:

• Apenas uma exceção possível (específica da aplicação).

• Não existe comunicação, logo não há exceção associada.

• Finalmente, não há exigência de parâmetros e retorno serializáveis.

• Embora, neste exemplo, eles sejam já que há uma versão remota da interface.

Page 30: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

Criação da Interface Home

• Interface que permite ao cliente criar (ou encontrar) uma referência ao EJB.

– Para o cliente, esta referência é do tipo da interface cliente (local ou remota, dependendo do caso).

• Novamente, podem ser duas versões:

– Local.

– Remota.

Page 31: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

Criação da Interface Home (Remota)

import java.rmi.RemoteException;

import javax.ejb.CreateException;

import javax.ejb.EJBHome;

public interface ProfileManagerHome extends EJBHome {

public ProfileManager create() throws CreateException,

RemoteException;

}

• Interfaces home provêm métodos de criação de EJB.

• Container se encarrega de decidir se nova instância deve de fato ser criada ou se instância já existente pode ser aproveitada.

• Pode haver mais de uma versão do método create() recebendo argumentos diferentes.

• Interface deve estender EJBHome.

Page 32: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

Criação da Interface Home (Remota)

import java.rmi.RemoteException;

import javax.ejb.CreateException;

import javax.ejb.EJBHome;

public interface ProfileManagerHome extends EJBHome {

public ProfileManager create() throws CreateException,

RemoteException;

}

• No caso da interface remota, também implicitamente estamos definindo uma interface RMI.

• Por isso, os métodos devem poder criar exceções do tipo RemoteException.

• Além disso, método create() pode disparar também um CreateException.

• Indica um problema na criação da instância do EJB.

Page 33: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

Criação da Interface Home (Remota)

import java.rmi.RemoteException;

import javax.ejb.CreateException;

import javax.ejb.EJBHome;

public interface ProfileManagerHome extends EJBHome {

public ProfileManager create() throws CreateException,

RemoteException;

}

• Método create() deve retornar um tipo que corresponde à interface cliente.

• Neste caso (interface home remota), a interface cliente remota.

• A cada declaração do método create(), corresponderá um método ejbCreate() na implementação do EJB.

• Será visto a seguir.

Page 34: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

Criação da Interface Home (Local)

import javax.ejb.CreateException;

import javax.ejb.EJBLocalHome;

public interface ProfileManagerLocalHome extends

EJBLocalHome {

public ProfileManagerLocal create() throws

CreateException;

}

• A interface local é bastante parecida.

• São definidos os métodos create().

• Algumas diferenças:

• Estende EJBLocalHome.

• Métodos não disparam exceção RemoteException.

Page 35: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

Implementação do Bean

• Precisamos escrever uma classe Java que efetivamente implementa o Bean.

• Em geral, podemos dividir os métodos desta classe em três categorias:

– Métodos de lógica de negócio.

• Métodos chamados pelos clientes.

• Devem casar com as interfaces cliente.

– Métodos internos (auxiliares) da classe.

• Usados para auxiliar na implementação do lógica de negócio.

• Não são expostos nas interfaces (cliente ou home).

– Métodos que implementam callbacks para o container.

• Métodos que implementam funcionalidades usadas pelo container para gerenciar o ciclo de vida do Bean.

• Incluem (mas não estão restritos) aos métodos ejbCreate() correspondendo aos métodos create() declarados nas interfaces home.

Page 36: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

Implementação do Bean (Exemplo)

• Todo EJB deve implementar a interface javax.ejb.EnterpriseBean.

• Geralmente, isso é feito de forma indireta, implementando uma das seguintes interfaces:

– SessionBean

– EntityBean

– MessageDrivenBean

import javax.ejb.SessionBean;

import javax.ejb.SessionContext;

import com.oreilly.jent.ejb.NoSuchPersonException;

public class ProfileManagerBean implements SessionBean {

...

Page 37: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

Implementação do Bean (Exemplo)

• Método ejbCreate() deve ser implementado.

• Mas a interface javax.ejb.EnterpriseBean também define outros métodos mandatórios.

– ejbPassivate(): chamado quando o bean é serializado para a memória secundária.

• Bean deixa de estar ativo e estado é armazenado em memória secundária

public void ejbCreate() {

System.out.println("ProfileManagerBean created.");

}

public void ejbPassivate() {

System.out.println("ProfileManagerBean passivated.");

}

Page 38: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

Implementação do Bean (Exemplo)

– ejbActivate(): chamado quando o bean é deserializado.

• Trazido de volta à memória para atender requisições de clientes.

– ejbRemove(): chamado quando o bean é removido do container.

– MessageDrivenBean

public void ejbActivate() {

System.out.println("ProfileManagerBean activated.");

}

public void ejbRemove() {

System.out.println("ProfileManagerBean removed.");

}

Page 39: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

Implementação do Bean (Exemplo)

• Métodos de lógica de negócio:

– Devem corresponder aos métodos da interface cliente.

• Neste exemplo, só há um método neste grupo.

• Este método faz referência ao método interno validateName().

public Profile getProfile(String name) throws

NoSuchPersonException {

if (!validateName(name)) {

throw new NoSuchPersonException("No user found

matching name \"" + name + "\"");

}

Profile profile = new

com.oreilly.jent.ejb.stateless.Profile(name);

return profile;

}

Page 40: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

Implementação do Bean: Outras Regras

• Classe que implementa um EJB deve ser pública.

– Permite que o container invoque métodos da classe diretamente.

• A classe não implementa a interface home diretamente.

– Não há métodos create().

– Apenas os correspondentes ejbCreate().

– Container faz o intermédio entre as duas versões dos métodos.

– Entre os artefatos gerados pelo container, estão classes que, de fato, implementam a interface home.

• Proxy.

Page 41: Enterprise Java Beans (I)diego/disciplinas/2014_2/... · Enterprise Java Beans (III) • O J2EE define três tipos diferentes de EJBs. –Beans de sessão. •Tipicamente não persistente

Próxima Aula

• Disponibilização do EJB no container.

– Arquivo descritor.

– Opções de Segurança.

– Empacotamento do EJB.

• Utilização do Bean no lado cliente.

– Clientes locais vs. Clientes Remotos.

– Localização de interfaces home.

– Criação de beans.

– Invocação de métodos.