1 Reply Latest reply on Oct 22, 2006 3:54 AM by jaikiran

    Stateful SessionBeans

    frankster

      Hello!

      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

        • 1. Re: Stateful SessionBeans
          jaikiran

          You will have to place the JBoss jar files(specifically the jar containing the org.jboss.invocation.Invoker class) in your client's classpath. I dont exactly remember the jar file names that you require in the client's classpath, but all the appropriate jars can be found in the %JBOSS_HOME%/client folder.