Despliegue de EJB en Jonas

Farraez
23 de Mayo del 2006
Hola a Todos!

se me presenta la siguiente situacion.

He creado un EBJ que tiene un metodo llamado sayHello y que saluda con "hola mundo"

lo despliego en el servidor Jonas v4.6.6 desde la interfaz web y luego creo la aplicacion cliente y le agrego el archivo jar generado por el server. el codigo del cliente es este:

package test.hello;

import java.util.Properties;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NameClassPair;
import javax.naming.NamingEnumeration;

import bean.example.*;
public class TestHello {

public static void main(String[] args) {

Properties env = new Properties();
env.setProperty("java.naming.factory.initial","com.sun.jndi.rmi.registry.RegistryContextFactory");
env.setProperty("java.naming.provider.url","rmi://localhost:1099");
env.setProperty("java.naming.factory.url.pkgs","org.objectweb.jonas.naming");

try{

Context ctx = new InitialContext(env);

NamingEnumeration list = ctx.list("");

while (list.hasMore()) {
NameClassPair nc = (NameClassPair)list.next();
System.out.println(nc);
}

Object obj = ctx.lookup("HelloHome");

//HelloHome helloHome = (HelloHome) javax.rmi.PortableRemoteObject.narrow(obj, HelloHome.class);

//Hello hi = helloHome.create();


//System.out.println("Hi men! : " + hi.sayHello());

//hi.remove();

}
catch(Exception e){
e.printStackTrace();
}

}

}

como ven, listo los recursos que tengo disponible en el server y al ejercutar me sale:

EarOpHome: java.lang.Object
JQCF: java.lang.Object
RMIConnector_jonas: java.lang.Object
"ejb/mgmt/MEJB": java.lang.Object
jonas_Adm: java.lang.Object
HelloHome: java.lang.Object
.
.

Como ven HelloHome esta disponible, y al hacer el
Object obj = ctx.lookup("HelloHome");

me arroja la siguiente excepcion:


javax.naming.CommunicationException [Root exception is java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
java.io.StreamCorruptedException]
at com.sun.jndi.rmi.registry.RegistryContext.lookup(Unknown Source)
at com.sun.jndi.rmi.registry.RegistryContext.lookup(Unknown Source)
at javax.naming.InitialContext.lookup(Unknown Source)
at test.hello.TestHello.main(TestHello.java:35)
Caused by: java.rmi.UnmarshalException: error unmarshalling return; nested exception is:
java.io.StreamCorruptedException
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
... 4 more
Caused by: java.io.StreamCorruptedException
at java.io.ObjectInputStream$BlockDataInputStream.readBlockHeader(Unknown Source)
at java.io.ObjectInputStream$BlockDataInputStream.refill(Unknown Source)
at java.io.ObjectInputStream$BlockDataInputStream.skipBlockData(Unknown Source)
at java.io.ObjectInputStream.skipCustomData(Unknown Source)
at java.io.ObjectInputStream.readSerialData(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
... 5 more

he intentado con "java/env" y todas las combinaciones posibles. Busque por la web y lei en algun foro que podria ser un problema de serializacion y deserializacion, pero realmente no encuentro la solucion.

¿alguna ayuda?

Farraez
23 de Mayo del 2006
Listo, problema solucionado!

Joder!, no habia copiado el archivo client.jar al classpath de mi cliente!!!

lol!