Exception in thread "main" java.lang.ClassCastException: $Proxy0
cannot be cast to estante.Libro
at Leer.main(Leer.java:20)
Me faltará algo?
Mi configuracion es la siguiente:
JBossTools-ALL-linux-gtk-3.0.0.CR2-R20090128015
eclipse-jee-ganymede-SR1-linux-gtk
jboss-4.2.3.GA-jdk6
Mis clases son:
----- Proyecto "Ejemplo" clase Leer.java
public static void main(String[] args) throws NamingException {
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("Context.PROVIDER_URL", "jnp://localhost:1099");
Context ctx = new InitialContext(properties);
Libro libro = (Libro) ctx.lookup("Libro/local");
System.out.println(libro.getSaludo());
}
----- Libro.java
package estante;
import javax.ejb.Stateless;
/**
* Session Bean implementation class Libro
*/
@Stateless
public class Libro implements LibroLocal {
/**
* Default constructor.
*/
public Libro() {
// TODO Auto-generated constructor stub
}
public String getSaludo() {
return "Hola...";
}
}
----- LibroLocal.java
package estante;
import javax.ejb.Local;
@Local
public interface LibroLocal {
String getSaludo();
}
Gracias.
--
Osvaldo González Acuña
Ingeniero Ejec. Computación e Informática
Asi a la rapida.. deberias referenciar con la interface y no con la
implementacion.
LibroLocal libro = (LibroLocal)ctx.lookup("Libro/local");
Gracias por sus respuestas, la solución fue crear una clase Remota
como dice Jose Miguel porque estan ocupando distintas maquinas JVM (la
del EJB y la del ejemplo). El otro punto que modifique fue como dijo
Ariel, la llamada al EJB:
LibroLocal libro = (LibroLocal)ctx.lookup("Libro/remote");
Saludos.