Pessoal, olha só.
Tenho uma dificuldade na hora de fazer os ejb.
Já lí diversos tutoriais, conferí e parece que não falta nada.
Fiz exatamente o seguinte:
No eclipse, gerei um EJB Project.
Gerei um session bean com @Stateless(mappedName=“meuejbjndi”) e uma interface remota com @remote;
Não gerei o ejb-jar.xml por ser ejb 3.0
exportei o jar: (Export / EJB / EJB jar file…)
Destino: C:\server\jboss-5.0.0.CR2\server\default\deploy\Meu30EJB.jar
Startei o JBoss 5
Gerei o projeto cliente,
Adicionei os jar no classpath (jboss-ejb3x.jar, ejb3-persistence.jar, hibernate-annotations.jar, jbossall-client.jar, jboss-annotations-ejb3.jar)
Copiei a interface remota para o cliente.
Executei o cliente com:
public static void main(String[] args) {
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
env.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
env.put(Context.PROVIDER_URL, "jnp://127.0.0.1:1099");
try {
Context ctx = new InitialContext(env);
MeuEJBRemote hello1 = null;
hello1 = (MeuEJBRemote) ctx.lookup("meuejbjndi");
System.out.println(hello1.mensagem());
} catch (NamingException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
}
}
Retorno:
Exception in thread “main” java.lang.ClassCastException: javax.naming.Reference incompatible with br.com.gst.MeuEJBRemote
at br.com.gst.Teste.main(Teste.java:21)
Não entendo o q pode estar errado. Por ser um ClassCastException imagino que o looup está funcionando. Esta interface existe tembém no cliente.
Coisa de doido, né?