Pessoal, montei um simples exemplo de como utilizar EJB3, porém, no cliente dá erro ao fazer a o lookup.
Estou usando o Jboss 4.2 e fiz o deploy no perfil all.
veja o EJB:
@Local
public interface AcervoLocal{
public ArrayList<Livro> getListBooks();
}
@Remote
public interface AcervoRemote{
public ArrayList<Livro> getListBooks();
}
Agora a implementação no SessioBean
@Stateless
public class AcervoBean implements AcervoLocal, AcervoRemote {
private LivroDAO ldao = new LivroDAO();
public AcervoBean(){
super();
}
public ArrayList<Livro> getListBooks(){
return ldao.getListaLivros();
}
}
Em seguida, montei o jboss.xml no diretório META-INF/
<?xml version="1.0"?>
<jboss
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://www.jboss.org/j2ee/schema/jboss_5_0.xsd"
version="3.0">
<enterprise-beans>
<session>
<ejb-name>Acervo</ejb-name>
<jndi-name>Acervo</jndi-name>
</session>
</enterprise-beans>
</jboss>
Bem, depois disso criei um jar (usando o eclipse a opção EJB JAR) e disponibilizei no \jboss\server\all\deploy
Em seguida, montei o client da seguinte maneira:
public static void main(String[] args){
try {
Context context = new InitialContext();
AcervoBean bean = (AcervoBean) context.lookup("ejb/Acervo");
List l = bean.getListBooks();
System.out.println("Size: " + (l!=null ? l.size() : 0) );
} catch (NamingException e) {
e.printStackTrace();
}
}
Mas… sem chances, já tentei de diversas maneiras e não localiza de jeito nenhum. Dá essa exceção:
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at luciano.client.MacacoClient.main(MacacoClient.java:16)
Pelo visto tenho que colocar alguns informações a mais no locator, correto? Alguém pode me ajudar!?
Thank’s
