Usei o NetBeans 5.5 e fiz um pequeno exemplo usando EJB3…
Meu Ejb:
… @Stateless(name=“Example”, mappedName=“ejb/CalcularBeanJNDI”)
public class CalcularBean implements pkgEjb.CalcularLocal {
…
…
Quando chamo a aplicação Cliente faço:
InitialContext ctx = new InitialContext();
CalcularLocal bean = (CalcularLocal) ctx.lookup(“ejb/CalcularBeanJNDI”);
QUando ele executa esta linha dá o seguinte erro:
javax.naming.NameNotFoundException: ejb not bound …
Para fazer o Deploy apenas copie o arquivo Jar do EJB para a pasta:
c:\Jboss\jboss-4.0.5.GA\server\default\deploy
Meu Jboss está rodando, e acessei o WebConsole dele o qual mostra em JNDIView o meu EJB:
± Example (class: org.jnp.interfaces.NamingContext)
| ± local (proxy: $Proxy85 implements interface pkgEjb.CalcularLocal,interface org.jboss.ejb3.JBossProxy,interface javax.ejb.EJBLocalObject)
O que pode estar errado ? Além de copiar o JAR preciso fazer mais algo ?
Conforme foi sugerido modifique o meu Cliente para:
Properties properties = new Properties();
properties.put(“java.naming.factory.initial”,“org.jnp.interfaces.NamingContextFactory”); properties.put(“java.naming.factory.url.pkgs”,"=org.jboss.naming:org.jnp.interfaces");
properties.put(“java.naming.provider.url”,“localhost:8080”);
Context context = new InitialContext(properties);
InitialContext ctx = new InitialContext();
CalcularLocal bean = (CalcularLocal) ctx.lookup(“Example/local”);
–>> Agora ele passa pelo Lookup sem dar erro, mas quando chama qualquer um dos métodos como:
String Ola = bean.digaOla(“Ola EJB3”);
dispara a seguinte mensagem:
Exception in thread “main” javax.ejb.EJBException: Invalid invocation of local interface (null container)
at org.jboss.ejb3.stateless.StatelessLocalProxy.invoke(StatelessLocalProxy.java:75)
at $Proxy0.digaOla(Unknown Source)