Hello there,
I'm running JBoss 4.2.3 GA default server (no mods) and have a EJB 2.1 bean deployed in it. Have created a stand-alone remote client to access the bean.
The client tries to do exactly the same as discussed in this post, that is, it only depends the jar file containing the bean interfaces (plus jbossall-client.jar of course), and it expects to be able to dynamically load the implementation classes from the server.
This worked on jboss 4.0.4. However, to get it working on 4.2.3 I had to add
<invoker-bindings> <invoker> <invoker-proxy-binding-name>stateless-rmi-invoker</invoker-proxy-binding-name> <jndi-name>DummySessionBean</jndi-name> </invoker> </invoker-bindings>
java.lang.reflect.UndeclaredThrowableException at $Proxy1.makeKnife(Unknown Source) at com.sysmech.ijamclient.IjamClient.execute(IjamClient.java:75) at com.sysmech.ijamclient.Main.main(Main.java:59) Caused by: java.lang.ClassNotFoundException: com.dummy.KnifeImpl at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:242) at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:585) at org.jboss.invocation.MarshalledValueInputStream.resolveClass(MarshalledValueInputStream.java:109) at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1544) at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1466) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1699) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348) at org.jboss.invocation.MarshalledValue.get(MarshalledValue.java:91) at org.jboss.invocation.unified.interfaces.UnifiedInvokerProxy.invoke(UnifiedInvokerProxy.java:196) at org.jboss.invocation.InvokerInterceptor.invokeInvoker(InvokerInterceptor.java:365) at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:197) at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:61) at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:70) at org.jboss.proxy.ejb.StatelessSessionInterceptor.invoke(StatelessSessionInterceptor.java:112) at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:100)
public Knife makeKnife() { return new KnifeImpl(); }