Olá pessoal!
Seguinte: estou fazendo uma aplicação usando ejbs e um ServiceLocator. Bem, pelo que entendi desse padrão de projeto, ele não é um bean, é apenas uma simples classe. Consigo obter interfaces remotas a partir do meu ServiceLocator, porém não consigo obter interfaces locais. Segue abaixo a implementação do meu ServiceLocator:
package jdelegacia.servico;
import java.util.*;
import javax.naming.*;
import javax.ejb.*;
import jdelegacia.persistencia.Util;
public class ServiceLocator {
private static ServiceLocator me;
InitialContext context = null;
private ServiceLocator() {
try {
Hashtable props = new Hashtable();
props.put(InitialContext.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
props.put(InitialContext.PROVIDER_URL, Util.getProperty("url_jnp"));
context = new InitialContext(props);
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static ServiceLocator getInstance() {
if (me == null) {
me = new ServiceLocator();
}
return me;
}
public EJBHome getRemoteService(String servico) {
try {
Object obj = context.lookup(servico);
return (EJBHome) javax.rmi.PortableRemoteObject.narrow(obj, EJBHome.class);
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public EJBLocalHome getLocalService(String servico) {
try {
Object obj = context.lookup(servico);
return (EJBLocalHome) javax.rmi.PortableRemoteObject.narrow(obj, EJBLocalHome.class);
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
Sempre que uso o método getLocalService(String servico) ele retorna um erro dizendo por exemplo: “Autenticacao not bound”. Mas o bean AutenticacaoBean foi “deployado” com sucesso. Alguém tem alguma idéia?
Obrigado!