Dúvidas básicas em EJB

Olá pessoal, estou iniciando em EJb e tenho algumas dúvidas.

Eu entendi que para cada objeto de negócio (EJB) devo ter tipicamente uma lasses e duas interfaces, sendo por exemplo

class AlunoBean implements SessionBean

[code]public class SAlunoBean implements SessionBean {
private static final long serialVersionUID = -5820999926378497748L;
private List alunos;

public void ejbCreate() throws CreateException{
	this.alunos = new ArrayList<Aluno>();
}

public void addAluno(Aluno a){
	this.alunos.add( a );		
}

public List<Aluno> find(String name){
	ArrayList<Aluno> encontrados = new ArrayList<Aluno>();
	
	for(Aluno element : alunos){
		if( name.trim().toLowerCase().equals( element.getNome().toLowerCase()) )
			encontrados.add( element );
	}//

	return encontrados;		
}

public void ejbActivate() throws EJBException, RemoteException {
}

public void ejbPassivate() throws EJBException, RemoteException {
}

public void ejbRemove() throws EJBException, RemoteException {
}

public void setSessionContext(SessionContext arg0) throws EJBException, RemoteException {
}

}
[/code]

interface AlunoHome extends EJBHome

[code]
public interface AlunoHome extends EJBHome {

Aluno create() throws RemoteException, CreateException;

}[/code]

interface Aluno extends EJBObject

public interface AlunoEjb extends EJBObject{

	public void addAluno(Aluno a) throws RemoteException;
	public List<Aluno> find(String n) throws RemoteException;

}

Consegui fazer funcionar facilmente meu EJB, criei 2 projetos no eclipse, 1 para a camada de Negócio e outro para Controle e Apresentação.
Mas gosto e preciso entender o conceito, foi o que não me responderam vários tutoriais que li na internet.
Tenho algumas dúvidas:

[b]- Quem implementa as interfaces que eu criei??

  • Pq a interface Home precisa ter os metodos criados no SessionBean?
  • Qual é a função da interface q extende EJBObject?
  • Existe uma ordem para serem chamadas pelo container?[/b]

Acho que com essas eu já consiguirei entender melhor, mas ainda tenho outras.

Obrigado.

:arrow: Qual é a função da interface q extende EJBObject?

  • Essa é a sua interface remota, especifica os métodos disponibilizados para o cliente. A interface é necessário porque o cliente utiliza um proxy para invocar o seu EJB, esse proxy é gerado para só saber fazer aquilo que está na sua interface.

:arrow: Pq a interface Home precisa ter os metodos criados no SessionBean?

  • Acho q vc se confundiu, o sessionbean não é ligado à home, a home é utilizada para o cliente obter o bean.

:arrow: Quem implementa as interfaces que eu criei??

  • Os proxys gerados pelo application server.

:arrow: Existe uma ordem para serem chamadas pelo container?

Cada tipo de ejb tem o seu ciclo de vida, dá uma olhada no google por “EJB lifecycle” q vc vai achar bastante coisa.

[]´s

Só uma curiosidade Luciano, vc decidiu aprender EJB2 por necessidade ou por vontade própria mesmo em detrimento da versão 3?

pafuncio, são as duas coisas, eu me interessei por estudar a tecnologia, e casualmente estou em projeto que necessita.

Eu já havia trabalhado com EJB, mas manutenções simples em Beans, visando a regra de negócio, nunca foi necessário criar do zero, e atualmente estou fazendo vários testes iniciando mesmo e aproveitando para tirar essas dúvidas básicas.

Pretendo ler um livro, vc me indicaria algum? De preferência em português.

Rafaelprp, muito obrigado! As respostas vão ajudar muito. 8)

Valeu.

[quote=lusilva1982]pafuncio, são as duas coisas, eu me interessei por estudar a tecnologia, e casualmente estou em projeto que necessita.

Eu já havia trabalhado com EJB, mas manutenções simples em Beans, visando a regra de negócio, nunca foi necessário criar do zero, e atualmente estou fazendo vários testes iniciando mesmo e aproveitando para tirar essas dúvidas básicas.

Pretendo ler um livro, vc me indicaria algum? De preferência em português.

Valeu.[/quote]

Cara, eu sou um zero à esquerda em EJB2.x … Ultimamente eu estou lendo o EJB3 In Action e estou gostando… é bastante objetivo… tem a versão traduzida dele: http://www.temporeal.com.br/produtos.php?id=171670