[jboss-jira] [JBoss JIRA] Commented: (EJBTHREE-698) Exception serialization issue when remotely accessing stateless session bean

David Bala?ic (JIRA) jira-events at lists.jboss.org
Mon Oct 22 08:49:04 EDT 2007


    [ http://jira.jboss.com/jira/browse/EJBTHREE-698?page=comments#action_12383671 ] 
            
David Bala?ic commented on EJBTHREE-698:
----------------------------------------

I have the same problem (on version 4.0.4GA , JDK 1.5.0_12  Windows XP).

And (fanfares...) I found a workaround.
If the exception is ClassNotFoundException: [Lcom.foo.Bar;

then just add a line in the client before the remote call :

import com.foo.Bar;
...

Bar [] dummy = { new Bar() };
remObj.yourRemoteCall(x,y,z);


It seems the JVM "forgets" to load (or create, array classes can not be loaded...) the class definition for "array of SomeClass", to that line of code "forces" it to do so before the call (when the definition is then required/used).

> Exception serialization issue when remotely accessing stateless session bean
> ----------------------------------------------------------------------------
>
>                 Key: EJBTHREE-698
>                 URL: http://jira.jboss.com/jira/browse/EJBTHREE-698
>             Project: EJB 3.0
>          Issue Type: Bug
>            Reporter: David Green
>
> Accessing a remote EJB (Session bean) results in exception.  Stack trace follows:
> 13:54:39,546 ERROR [SocketClientInvoker] Got marshalling exception, exiting
> java.lang.ClassNotFoundException: [Ljava.lang.StackTraceElement;
> 	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:276)
> 	at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
> 	at org.jboss.remoting.loading.RemotingClassLoader.loadClass(RemotingClassLoader.java:50)
> 	at org.jboss.remoting.loading.ObjectInputStreamWithClassLoader.resolveClass(ObjectInputStreamWithClassLoader.java:139)
> 	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1575)
> 	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
> 	at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1624)
> 	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1323)
> 	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
> 	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
> 	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> 	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> 	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1945)
> 	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1869)
> 	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
> 	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
> 	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
> 	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:55)
> 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
> 	at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:61)
> 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
> 	at org.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:55)
> 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
> 	at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:65)
> 	at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
> 	at org.jboss.ejb3.stateless.StatelessRemoteProxy.invoke(StatelessRemoteProxy.java:102)
> 	at $Proxy0.postNotification(Unknown Source)
> 	at com.hgea.hch.service.HchClientDelegate.postNotification(HchClientDelegate.java:99)
> 	at com.hgea.hch.client.RemoteHchClientTest.testRemotePostNotification(RemoteHchClientTest.java:38)
> 	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:597)
> 	at junit.framework.TestCase.runTest(TestCase.java:154)
> 	at junit.framework.TestCase.runBare(TestCase.java:127)
> 	at junit.framework.TestResult$1.protect(TestResult.java:106)
> 	at junit.framework.TestResult.runProtected(TestResult.java:124)
> 	at junit.framework.TestResult.run(TestResult.java:109)
> 	at junit.framework.TestCase.run(TestCase.java:118)
> 	at junit.framework.TestSuite.runTest(TestSuite.java:208)
> 	at junit.framework.TestSuite.run(TestSuite.java:203)
> 	at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:297)
> 	at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:672)
> 	at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:567)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jboss-jira mailing list