Acesso EJB no Glassfish

1 resposta
L

Boa noite pessoal,

estou com um problema que já está me tomando várias horas. Estou tentando acessar um EJB de um ManagedBean, mas não estou conseguindo. aparece o erro javax.naming.NameNotFoundException.

Meus códigos são os seguintes:

Bean

package teste;

import javax.ejb.Stateless;

/**
 * Session Bean implementation class Alo
 */

@Stateless
public class Alo implements AloLocal, AloRemote {
	
    public String alo(String nome) {
    	return nome.endsWith("a") ? "Olá" + nome + ", qual é seu telefone?"
    			: "Alô" + nome + ", desinfeta!";
    }

}

ManagedBean

package teste;

import java.util.Properties;

import javax.ejb.EJB;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class Index {

	AloLocal servidor;
	private String nome;
	public String getNome(){ return nome; }
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getResposta(){
		
		Properties props = new Properties();  
		props.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory");  
		props.setProperty("java.naming.provider.url", "localhost:3700");  
		props.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");     
	
		Context context;
	
		try {  
			context = new InitialContext(props);
			servidor = (AloLocal) context.lookup("Alo");
			servidor.alo(nome);
		} catch (NamingException e) {    
			e.printStackTrace();  
		}
			return nome == null ? "" : servidor.alo(nome);
	}
	
}

O exemplo é da Java Magazine número 61.

Como o acesso é pelo managedbean, eu não posso usar o @EJB. E quando eu usava, dava erro.

Qual a solução?

1 Resposta

L

opa, resolvi trocando a interface Local pela Remota.

=]

Criado 29 de outubro de 2008
Ultima resposta 30 de out. de 2008
Respostas 1
Participantes 1