Estou estudando EJB 3.0 e não consigo executar o “simples” programa para um stateless session bean. Abaixo as classes juntamente com o erro quando executo o cliente. Vocês poderiam me ajudar?
===============
package fontes;
import javax.ejb.Remote;
@Remote
public interface HelloWorldLocal {
public String hello();
}
==================
package fontes;
import javax.ejb.Stateless;
/**
Session Bean implementation class HelloWorld
*/ @Stateless
public class HelloWorld implements HelloWorldLocal {
/**
* Default constructor.
*/
public HelloWorld() {
// TODO Auto-generated constructor stub
}
@Override
public String hello() {
System.out.println("Primeiro EJB Funcionando");
return "Hello, World!";
}
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(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.lookup(Unknown Source)
at fontes.HelloClient.main(HelloClient.java:15)
seu cliente do ejb precisa das propriedades do innitialContext
eu também não manjo muito de ejb, mais pelo que eu aprendi, você deve criar o innitialContext passando um properties, ou map (não lembro direito se pode ser map)com as configurações:
se você tiver usando o JBOSS na sua própria maquina acho que ficaria alguma coisa ± assim:
===============
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(Unknown Source)
at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
at javax.naming.InitialContext.lookup(Unknown Source)
at fontes.HelloClient.main(HelloClient.java:31)