Stateful SessionBeans
frankster Oct 22, 2006 3:42 AMHello!
I´m a totaly newbie in programming with EJB3.0
So I tried a very easy tutorial for Stateful SessionBeans.
I always get an "Exception in thread "main" java.lang.NoClassDefFoundError: Lorg/jboss/invocation/Invoker"
Exception in thread "main" java.lang.NoClassDefFoundError: Lorg/jboss/invocation/Invoker; at java.lang.Class.getDeclaredFields0(Native Method) at java.lang.Class.privateGetDeclaredFields(Unknown Source) at java.lang.Class.getDeclaredField(Unknown Source) at java.io.ObjectStreamClass.getDeclaredSUID(Unknown Source) at java.io.ObjectStreamClass.access$700(Unknown Source) at java.io.ObjectStreamClass$2.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.io.ObjectStreamClass.<init>(Unknown Source) at java.io.ObjectStreamClass.lookup(Unknown Source) at java.io.ObjectStreamClass.initNonProxy(Unknown Source) at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source) at java.io.ObjectInputStream.readClassDesc(Unknown Source) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.defaultReadFields(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.defaultReadFields(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) at org.jboss.aop.joinpoint.InvocationResponse.readExternal(InvocationResponse.java:107) at java.io.ObjectInputStream.readExternalData(Unknown Source) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.defaultReadFields(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) at org.jboss.remoting.serialization.impl.java.JavaSerializationManager.receiveObject(JavaSerializationManager.java:128) at org.jboss.remoting.marshal.serializable.SerializableUnMarshaller.read(SerializableUnMarshaller.java:66) at org.jboss.remoting.transport.socket.SocketClientInvoker.transport(SocketClientInvoker.java:279) at org.jboss.remoting.RemoteClientInvoker.invoke(RemoteClientInvoker.java:143) at org.jboss.remoting.Client.invoke(Client.java:525) at org.jboss.remoting.Client.invoke(Client.java:488) at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:41) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:88) at org.jboss.aspects.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:34) at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:88) at org.jboss.aspects.remoting.PojiProxy.invoke(PojiProxy.java:46) at $Proxy0.createProxy(Unknown Source) at org.jboss.ejb3.JndiProxyFactory.getObjectInstance(JndiProxyFactory.java:52) at javax.naming.spi.NamingManager.getObjectInstance(Unknown Source) at org.jnp.interfaces.NamingContext.getObjectInstance(NamingContext.java:1125) at org.jnp.interfaces.NamingContext.getObjectInstanceWrapFailure(NamingContext.java:1142) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:705) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587) at javax.naming.InitialContext.lookup(Unknown Source) at client.calcClient.main(calcClient.java:16)
Here are my codes:
CalculatorSession
package calculator; import java.io.Serializable; @javax.ejb.Stateful public class CalculatorSession implements ICalculator, Serializable { static final long serialVersionUID = 7422574264557894633L; public int last; public CalculatorSession(){ last = 0; } public int add(int a, int b) { last = a+b; return a+b; } public int last() { return last; } }
ICalculator
package calculator; @javax.ejb.Remote public interface ICalculator{ public int add(int a, int b); public int last(); }
calcClient
package client; import java.util.Properties; import javax.naming.InitialContext; import calculator.*; public class calcClient { public static void main(String[] args) throws Exception { Properties p = new Properties(); p.put("java.naming.factory.inition","org.jnp.interfaces.NamingContextFactory"); p.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces"); p.put("java.naming.provider.url","jnp://localhost:1099"); InitialContext ctx = new InitialContext(p); ICalculator calc = (ICalculator) ctx.lookup("CalculatorSession/remote"); System.out.println("2 + 1 = " + calc.add(2,1)); System.out.println("LAST: " + calc.last()); System.out.println("2 + 4 = " + calc.add(2,4)); System.out.println("LAST: " + calc.last()); } }
I installed:
JBOSS AS 4.0.4
JBossIDE 2.0.0.Beta2
Eclipse 3.2.1
Many Thanks
Frankster