K
Kimba
Hi all,
I have a slight problem, I try to create a reference Stateless
SessionBean but for some reason each time my client tries to access the
Bean after looking it up on JNDI I end up getting the following
exception:
Code:
Exception in thread "main" java.lang.NoClassDefFoundError:
[Lorg/jboss/aop/advice/Interceptor;
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2232)
at java.lang.Class.getDeclaredField(Class.java:1852)
at
java.i
bjectStreamClass.getDeclaredSUID(ObjectStreamClass.java:1555)
at java.i
bjectStreamClass.access$600(ObjectStreamClass.java:47)
at java.i
bjectStreamClass$2.run(ObjectStreamClass.java:381)
at java.security.AccessController.doPrivileged(Native Method)
at java.i
bjectStreamClass.<init>(ObjectStreamClass.java:373)
at java.i
bjectStreamClass.lookup(ObjectStreamClass.java:268)
at java.i
bjectStreamClass.initNonProxy(ObjectStreamClass.java:504)
at
java.i
bjectInputStream.readNonProxyDesc(ObjectInputStream.java:1546)
at
java.i
bjectInputStream.readClassDesc(ObjectInputStream.java:1460)
at
java.i
bjectInputStream.readNonProxyDesc(ObjectInputStream.java:1546)
at
java.i
bjectInputStream.readClassDesc(ObjectInputStream.java:1460)
at
java.i
bjectInputStream.readNonProxyDesc(ObjectInputStream.java:1546)
at
java.i
bjectInputStream.readClassDesc(ObjectInputStream.java:1460)
at
java.i
bjectInputStream.readOrdinaryObject(ObjectInputStream.java:1693)
at java.i
bjectInputStream.readObject0(ObjectInputStream.java:1299)
at
java.i
bjectInputStream.defaultReadFields(ObjectInputStream.java:1912)
at
java.i
bjectInputStream.readSerialData(ObjectInputStream.java:1836)
at
java.i
bjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
at java.i
bjectInputStream.readObject0(ObjectInputStream.java:1299)
at java.i
bjectInputStream.readObject(ObjectInputStream.java:339)
at java.rmi.MarshalledObject.get(MarshalledObject.java:135)
at
org.jnp.interfaces.MarshalledValuePair.get(MarshalledValuePair.java:72)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:652)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at com.kimbasoft.reference.ejb.client.MyClient.main(MyClient.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
Here is my source:
Remote Interface:
Code:
package com.kimbasoft.reference.ejb.session;
public interface TestRemote {
public String sayHelloRemote();
}
Local Interface:
Code:
package com.kimbasoft.reference.ejb.session;
public interface TestLocal {
public String sayHelloLocal();
}
Bean Implementation:
Code:
package com.kimbasoft.reference.ejb.session;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.ejb.Local;
@Stateless
@Local({TestLocal.class })
@Remote({TestRemote.class})
public class TestBean implements TestRemote {
public String sayHelloRemote() {
return "Hello Remote World!!!";
}
public String sayHelloLocal() {
return "Hello Local World!!!";
}
}
Client Implementation:
Code:
package com.kimbasoft.reference.ejb.client;
import com.kimbasoft.reference.ejb.session.TestRemote;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class MyClient {
public static void main(String[] args) {
Context ctx;
try {
ctx = new InitialContext();
TestRemote obj = (TestRemote) ctx.lookup("TestBean/remote");
System.out.println(">>" + obj.sayHelloRemote());
} catch (NamingException e) {
System.out.println("ERROR");
e.printStackTrace();
}
}
}
First I compile everything and package it into a JAR file. Then I
deploy it on JBoss. After deploying I check the JNDI content and can
see my TestBean and it's remote and local interface. Now I start the
client (I have the client JARs of JBoss in the path) on my local pc out
of a local copy of the JAR file I deployed on the server and then I get
the above mentioned exception. Can anybody help me and tell me what I'm
doing wrong???
Thanks,
Kimba
Configuration:
JBoss 4.0.4 GA
jboss-EJB-3.0_RC8-FD
JDK 1.5.0
I have a slight problem, I try to create a reference Stateless
SessionBean but for some reason each time my client tries to access the
Bean after looking it up on JNDI I end up getting the following
exception:
Code:
Exception in thread "main" java.lang.NoClassDefFoundError:
[Lorg/jboss/aop/advice/Interceptor;
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2232)
at java.lang.Class.getDeclaredField(Class.java:1852)
at
java.i
at java.i
at java.i
at java.security.AccessController.doPrivileged(Native Method)
at java.i
at java.i
at java.i
at
java.i
at
java.i
at
java.i
at
java.i
at
java.i
at
java.i
at
java.i
at java.i
at
java.i
at
java.i
at
java.i
at java.i
at java.i
at java.rmi.MarshalledObject.get(MarshalledObject.java:135)
at
org.jnp.interfaces.MarshalledValuePair.get(MarshalledValuePair.java:72)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:652)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at com.kimbasoft.reference.ejb.client.MyClient.main(MyClient.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
Here is my source:
Remote Interface:
Code:
package com.kimbasoft.reference.ejb.session;
public interface TestRemote {
public String sayHelloRemote();
}
Local Interface:
Code:
package com.kimbasoft.reference.ejb.session;
public interface TestLocal {
public String sayHelloLocal();
}
Bean Implementation:
Code:
package com.kimbasoft.reference.ejb.session;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.ejb.Local;
@Stateless
@Local({TestLocal.class })
@Remote({TestRemote.class})
public class TestBean implements TestRemote {
public String sayHelloRemote() {
return "Hello Remote World!!!";
}
public String sayHelloLocal() {
return "Hello Local World!!!";
}
}
Client Implementation:
Code:
package com.kimbasoft.reference.ejb.client;
import com.kimbasoft.reference.ejb.session.TestRemote;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class MyClient {
public static void main(String[] args) {
Context ctx;
try {
ctx = new InitialContext();
TestRemote obj = (TestRemote) ctx.lookup("TestBean/remote");
System.out.println(">>" + obj.sayHelloRemote());
} catch (NamingException e) {
System.out.println("ERROR");
e.printStackTrace();
}
}
}
First I compile everything and package it into a JAR file. Then I
deploy it on JBoss. After deploying I check the JNDI content and can
see my TestBean and it's remote and local interface. Now I start the
client (I have the client JARs of JBoss in the path) on my local pc out
of a local copy of the JAR file I deployed on the server and then I get
the above mentioned exception. Can anybody help me and tell me what I'm
doing wrong???
Thanks,
Kimba
Configuration:
JBoss 4.0.4 GA
jboss-EJB-3.0_RC8-FD
JDK 1.5.0