3 Replies Latest reply on Apr 21, 2004 5:27 PM by 3004

    Deserialization error

    3004
      Scenario:
                I have exceptions sent as JMS messages from a server to a JMS client.
                The classes of these exceptions are not known compile-time by the
                client, but will be loaded run-time according to a xml file by an
                URLClassLoader.
                
                When the jar-file containing the exceptions is loaded by the class
                loader, I do a Class.forName(exceptionClass, true, exceptionLaader), and
                no exceptions (ClassNotFoundException) occur.
                
                When a message containing a SecretException (already loaded by the
                classloader into the VM) arrives, the JMS client throws a
                DeserializationException, with a ClassNotFoundException as the cause.
                This is awfully strange, since the class already is known within the VM.
                
                Source code:
                
                public void onMessage(Message msg) {
                     if (msg instanceof ObjectMessage ){
                          try {               
                               ObjectMessage oMsg = (ObjectMessage) msg;
                               TuamoExceptionWrapper wrapper =      (TuamoExceptionWrapper)
                oMsg.getObject(); //EXCEPTION THROWN HERE
                                    
                               //get exceptionHandler and handle exception
                               getExceptionHandler().handle(wrapper);
                          } //end try
                          catch (JMSException e) {
                               e.printStackTrace();
                          }//end catch
                     }//end if
                     try {
                          msg.acknowledge();
                     }
                     catch (JMSException e) {
                     }
                }
                
                Stack trace:
                
                weblogic.jms.common.JMSException: Error deserializing object at
                weblogic.jms.common.ObjectMessageImpl.getObject(ObjectMessageImpl.java:144)
                at
                tuamo.monitoring.jms.ExceptionReceiver.onMessage(ExceptionReceiver.java:75)
                at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:2596)
                at weblogic.jms.client.JMSSession.execute(JMSSession.java:2516)
                at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
                at weblogic.kernel.Kernel.execute(Kernel.java:336)
                at weblogic.kernel.Kernel.execute(Kernel.java:360)
                at weblogic.kernel.Kernel.execute(Kernel.java:348)
                at weblogic.jms.client.JMSSession.pushMessage(JMSSession.java:2392)
                at weblogic.jms.client.JMSSession.invoke(JMSSession.java:2924)
                at
                weblogic.jms.dispatcher.Request.wrappedFiniteStateMachine(Request.java:621)
                at
                weblogic.jms.dispatcher.DispatcherImpl.dispatchAsyncInternal(DispatcherImpl.java:128)
                at
                weblogic.jms.dispatcher.DispatcherImpl.dispatchOneWay(DispatcherImpl.java:312)
                at weblogic.jms.dispatcher.DispatcherImpl_WLSkel.invoke(Unknown Source)
                at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
                at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
                at
                weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:353)
                at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:144)
                at
                weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:415)
                at
                weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30)
                at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
                at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
                Caused by: java.lang.ClassNotFoundException:
                tuamo.monitoring.test.SecretException
                at java.net.URLClassLoader$1.run(URLClassLoader.java:199)
                at java.security.AccessController.doPrivileged(Native Method)
                at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
                at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
                at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
                at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
                at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
                at java.lang.Class.forName0(Native Method)
                at java.lang.Class.forName(Class.java:219)
                at
                weblogic.jms.common.ObjectMessageImpl$ObjectInputStream2.resolveClass(ObjectMessageImpl.java:305)
                at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1513)
                at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1435)
                at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1626)
                at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
                at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1845)
                at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1769)
                at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1646)
                at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
                at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
                at
                weblogic.jms.common.ObjectMessageImpl.getObject(ObjectMessageImpl.java:130)
                
                
        • 1. Re: Deserialization error
          3004
          This is truly not my area, but I think what is happening is that
                    the onMessage is running in a WebLogic thread - and this
                    thread is not using your custom class-loader.
                    (class-loaders are set on a per-thread basis).
                    
                    Some random things to try:
                    
                    - Reset the thread's class loader
                    each time before calling "objmsg.getObject()".
                    
                    - Stream the object into bytes on the sender
                    and then pass the data using a bytes message.
                    Upon receive, set the thread's class loader and
                    deserialize the bytes directly.
                    
                    - Use synchronous JMS rather than asynchronous
                    JMS in your client - this way you have full control over the
                    threads. I think threads inherit the class-loader of
                    the thread that created them.
                    
                    Tom
                    
                    Tron wrote:
                    
                    > Scenario:
                    > I have exceptions sent as JMS messages from a server to a JMS client.
                    > The classes of these exceptions are not known compile-time by the
                    > client, but will be loaded run-time according to a xml file by an
                    > URLClassLoader.
                    >
                    > When the jar-file containing the exceptions is loaded by the class
                    > loader, I do a Class.forName(exceptionClass, true, exceptionLaader), and
                    > no exceptions (ClassNotFoundException) occur.
                    >
                    > When a message containing a SecretException (already loaded by the
                    > classloader into the VM) arrives, the JMS client throws a
                    > DeserializationException, with a ClassNotFoundException as the cause.
                    > This is awfully strange, since the class already is known within the VM.
                    >
                    > Source code:
                    >
                    > public void onMessage(Message msg) {
                    > if (msg instanceof ObjectMessage ){
                    > try {          
                    > ObjectMessage oMsg = (ObjectMessage) msg;
                    > TuamoExceptionWrapper wrapper = (TuamoExceptionWrapper)
                    > oMsg.getObject(); //EXCEPTION THROWN HERE
                    >
                    > //get exceptionHandler and handle exception
                    > getExceptionHandler().handle(wrapper);
                    > } //end try
                    > catch (JMSException e) {
                    > e.printStackTrace();
                    > }//end catch
                    > }//end if
                    > try {
                    > msg.acknowledge();
                    > }
                    > catch (JMSException e) {
                    > }
                    > }
                    >
                    > Stack trace:
                    >
                    > weblogic.jms.common.JMSException: Error deserializing object at
                    > weblogic.jms.common.ObjectMessageImpl.getObject(ObjectMessageImpl.java:144)
                    > at
                    > tuamo.monitoring.jms.ExceptionReceiver.onMessage(ExceptionReceiver.java:75)
                    > at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:2596)
                    > at weblogic.jms.client.JMSSession.execute(JMSSession.java:2516)
                    > at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
                    > at weblogic.kernel.Kernel.execute(Kernel.java:336)
                    > at weblogic.kernel.Kernel.execute(Kernel.java:360)
                    > at weblogic.kernel.Kernel.execute(Kernel.java:348)
                    > at weblogic.jms.client.JMSSession.pushMessage(JMSSession.java:2392)
                    > at weblogic.jms.client.JMSSession.invoke(JMSSession.java:2924)
                    > at
                    > weblogic.jms.dispatcher.Request.wrappedFiniteStateMachine(Request.java:621)
                    > at
                    > weblogic.jms.dispatcher.DispatcherImpl.dispatchAsyncInternal(DispatcherImpl.java:128)
                    >
                    > at
                    > weblogic.jms.dispatcher.DispatcherImpl.dispatchOneWay(DispatcherImpl.java:312)
                    >
                    > at weblogic.jms.dispatcher.DispatcherImpl_WLSkel.invoke(Unknown Source)
                    > at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
                    > at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
                    > at
                    > weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:353)
                    >
                    > at
                    > weblogic.security.service.SecurityManager.runAs(SecurityManager.java:144)
                    > at
                    > weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:415)
                    > at
                    > weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30)
                    >
                    > at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
                    > at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
                    > Caused by: java.lang.ClassNotFoundException:
                    > tuamo.monitoring.test.SecretException
                    > at java.net.URLClassLoader$1.run(URLClassLoader.java:199)
                    > at java.security.AccessController.doPrivileged(Native Method)
                    > at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
                    > at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
                    > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
                    > at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
                    > at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
                    > at java.lang.Class.forName0(Native Method)
                    > at java.lang.Class.forName(Class.java:219)
                    > at
                    > weblogic.jms.common.ObjectMessageImpl$ObjectInputStream2.resolveClass(ObjectMessageImpl.java:305)
                    >
                    > at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1513)
                    > at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1435)
                    > at
                    > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1626)
                    > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
                    > at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1845)
                    > at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1769)
                    > at
                    > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1646)
                    > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
                    > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
                    > at
                    > weblogic.jms.common.ObjectMessageImpl.getObject(ObjectMessageImpl.java:130)
                    >
                    
                    
          • 2. Re: Deserialization error
            3004
            Hello
                      
                      I would like to thank You for correct and precise answers. As always, your
                      tip no 1 went straight home. Excellent support!
                      
                      Yours
                      Tron
                      
                      "Tom Barnes"
                      <pleasereplyinnewsgroup.weblogic.developer.interest.jms@newsgroups.bea.com>
                      wrote in message news:4072C8B5.90202@newsgroups.bea.com...
                      > This is truly not my area, but I think what is happening is that
                      > the onMessage is running in a WebLogic thread - and this
                      > thread is not using your custom class-loader.
                      > (class-loaders are set on a per-thread basis).
                      >
                      > Some random things to try:
                      >
                      > - Reset the thread's class loader
                      > each time before calling "objmsg.getObject()".
                      >
                      > - Stream the object into bytes on the sender
                      > and then pass the data using a bytes message.
                      > Upon receive, set the thread's class loader and
                      > deserialize the bytes directly.
                      >
                      > - Use synchronous JMS rather than asynchronous
                      > JMS in your client - this way you have full control over the
                      > threads. I think threads inherit the class-loader of
                      > the thread that created them.
                      >
                      > Tom
                      >
                      > Tron wrote:
                      >
                      > > Scenario:
                      > > I have exceptions sent as JMS messages from a server to a JMS client.
                      > > The classes of these exceptions are not known compile-time by the
                      > > client, but will be loaded run-time according to a xml file by an
                      > > URLClassLoader.
                      > >
                      > > When the jar-file containing the exceptions is loaded by the class
                      > > loader, I do a Class.forName(exceptionClass, true, exceptionLaader), and
                      > > no exceptions (ClassNotFoundException) occur.
                      > >
                      > > When a message containing a SecretException (already loaded by the
                      > > classloader into the VM) arrives, the JMS client throws a
                      > > DeserializationException, with a ClassNotFoundException as the cause.
                      > > This is awfully strange, since the class already is known within the VM.
                      > >
                      > > Source code:
                      > >
                      > > public void onMessage(Message msg) {
                      > > if (msg instanceof ObjectMessage ){
                      > > try {
                      > > ObjectMessage oMsg = (ObjectMessage) msg;
                      > > TuamoExceptionWrapper wrapper = (TuamoExceptionWrapper)
                      > > oMsg.getObject(); //EXCEPTION THROWN HERE
                      > >
                      > > //get exceptionHandler and handle exception
                      > > getExceptionHandler().handle(wrapper);
                      > > } //end try
                      > > catch (JMSException e) {
                      > > e.printStackTrace();
                      > > }//end catch
                      > > }//end if
                      > > try {
                      > > msg.acknowledge();
                      > > }
                      > > catch (JMSException e) {
                      > > }
                      > > }
                      > >
                      > > Stack trace:
                      > >
                      > > weblogic.jms.common.JMSException: Error deserializing object at
                      > >
                      weblogic.jms.common.ObjectMessageImpl.getObject(ObjectMessageImpl.java:144)
                      > > at
                      > >
                      tuamo.monitoring.jms.ExceptionReceiver.onMessage(ExceptionReceiver.java:75)
                      > > at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:2596)
                      > > at weblogic.jms.client.JMSSession.execute(JMSSession.java:2516)
                      > > at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
                      > > at weblogic.kernel.Kernel.execute(Kernel.java:336)
                      > > at weblogic.kernel.Kernel.execute(Kernel.java:360)
                      > > at weblogic.kernel.Kernel.execute(Kernel.java:348)
                      > > at weblogic.jms.client.JMSSession.pushMessage(JMSSession.java:2392)
                      > > at weblogic.jms.client.JMSSession.invoke(JMSSession.java:2924)
                      > > at
                      > >
                      weblogic.jms.dispatcher.Request.wrappedFiniteStateMachine(Request.java:621)
                      > > at
                      > >
                      weblogic.jms.dispatcher.DispatcherImpl.dispatchAsyncInternal(DispatcherImpl.
                      java:128)
                      > >
                      > > at
                      > >
                      weblogic.jms.dispatcher.DispatcherImpl.dispatchOneWay(DispatcherImpl.java:31
                      2)
                      > >
                      > > at weblogic.jms.dispatcher.DispatcherImpl_WLSkel.invoke(Unknown Source)
                      > > at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
                      > > at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
                      > > at
                      > >
                      weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubjec
                      t.java:353)
                      > >
                      > > at
                      > >
                      weblogic.security.service.SecurityManager.runAs(SecurityManager.java:144)
                      > > at
                      > >
                      weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:415)
                      > > at
                      > >
                      weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:3
                      0)
                      > >
                      > > at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
                      > > at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
                      > > Caused by: java.lang.ClassNotFoundException:
                      > > tuamo.monitoring.test.SecretException
                      > > at java.net.URLClassLoader$1.run(URLClassLoader.java:199)
                      > > at java.security.AccessController.doPrivileged(Native Method)
                      > > at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
                      > > at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
                      > > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
                      > > at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
                      > > at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
                      > > at java.lang.Class.forName0(Native Method)
                      > > at java.lang.Class.forName(Class.java:219)
                      > > at
                      > >
                      weblogic.jms.common.ObjectMessageImpl$ObjectInputStream2.resolveClass(Object
                      MessageImpl.java:305)
                      > >
                      > > at
                      java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1513)
                      > > at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1435)
                      > > at
                      > >
                      java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1626)
                      > > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
                      > > at
                      java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1845)
                      > > at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1769)
                      > > at
                      > >
                      java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1646)
                      > > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
                      > > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
                      > > at
                      > >
                      weblogic.jms.common.ObjectMessageImpl.getObject(ObjectMessageImpl.java:130)
                      > >
                      >
                      
                      
                      
            • 3. Re: Deserialization error
              3004
              how do you reset the Thread's class loader?
                        
                        Thanks,
                        Keyur
                        
                        "Tron" <tronremovethis@walseth.no> wrote in message
                        news:4073b456@newsgroups.bea.com...
                        > Hello
                        >
                        > I would like to thank You for correct and precise answers. As always, your
                        > tip no 1 went straight home. Excellent support!
                        >
                        > Yours
                        > Tron
                        >
                        > "Tom Barnes"
                        >
                        <pleasereplyinnewsgroup.weblogic.developer.interest.jms@newsgroups.bea.com>
                        > wrote in message news:4072C8B5.90202@newsgroups.bea.com...
                        > > This is truly not my area, but I think what is happening is that
                        > > the onMessage is running in a WebLogic thread - and this
                        > > thread is not using your custom class-loader.
                        > > (class-loaders are set on a per-thread basis).
                        > >
                        > > Some random things to try:
                        > >
                        > > - Reset the thread's class loader
                        > > each time before calling "objmsg.getObject()".
                        > >
                        > > - Stream the object into bytes on the sender
                        > > and then pass the data using a bytes message.
                        > > Upon receive, set the thread's class loader and
                        > > deserialize the bytes directly.
                        > >
                        > > - Use synchronous JMS rather than asynchronous
                        > > JMS in your client - this way you have full control over the
                        > > threads. I think threads inherit the class-loader of
                        > > the thread that created them.
                        > >
                        > > Tom
                        > >
                        > > Tron wrote:
                        > >
                        > > > Scenario:
                        > > > I have exceptions sent as JMS messages from a server to a JMS client.
                        > > > The classes of these exceptions are not known compile-time by the
                        > > > client, but will be loaded run-time according to a xml file by an
                        > > > URLClassLoader.
                        > > >
                        > > > When the jar-file containing the exceptions is loaded by the class
                        > > > loader, I do a Class.forName(exceptionClass, true, exceptionLaader),
                        and
                        > > > no exceptions (ClassNotFoundException) occur.
                        > > >
                        > > > When a message containing a SecretException (already loaded by the
                        > > > classloader into the VM) arrives, the JMS client throws a
                        > > > DeserializationException, with a ClassNotFoundException as the cause.
                        > > > This is awfully strange, since the class already is known within the
                        VM.
                        > > >
                        > > > Source code:
                        > > >
                        > > > public void onMessage(Message msg) {
                        > > > if (msg instanceof ObjectMessage ){
                        > > > try {
                        > > > ObjectMessage oMsg = (ObjectMessage) msg;
                        > > > TuamoExceptionWrapper wrapper =
                        (TuamoExceptionWrapper)
                        > > > oMsg.getObject(); //EXCEPTION THROWN HERE
                        > > >
                        > > > //get exceptionHandler and handle exception
                        > > > getExceptionHandler().handle(wrapper);
                        > > > } //end try
                        > > > catch (JMSException e) {
                        > > > e.printStackTrace();
                        > > > }//end catch
                        > > > }//end if
                        > > > try {
                        > > > msg.acknowledge();
                        > > > }
                        > > > catch (JMSException e) {
                        > > > }
                        > > > }
                        > > >
                        > > > Stack trace:
                        > > >
                        > > > weblogic.jms.common.JMSException: Error deserializing object at
                        > > >
                        >
                        weblogic.jms.common.ObjectMessageImpl.getObject(ObjectMessageImpl.java:144)
                        > > > at
                        > > >
                        >
                        tuamo.monitoring.jms.ExceptionReceiver.onMessage(ExceptionReceiver.java:75)
                        > > > at weblogic.jms.client.JMSSession.onMessage(JMSSession.java:2596)
                        > > > at weblogic.jms.client.JMSSession.execute(JMSSession.java:2516)
                        > > > at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
                        > > > at weblogic.kernel.Kernel.execute(Kernel.java:336)
                        > > > at weblogic.kernel.Kernel.execute(Kernel.java:360)
                        > > > at weblogic.kernel.Kernel.execute(Kernel.java:348)
                        > > > at weblogic.jms.client.JMSSession.pushMessage(JMSSession.java:2392)
                        > > > at weblogic.jms.client.JMSSession.invoke(JMSSession.java:2924)
                        > > > at
                        > > >
                        >
                        weblogic.jms.dispatcher.Request.wrappedFiniteStateMachine(Request.java:621)
                        > > > at
                        > > >
                        >
                        weblogic.jms.dispatcher.DispatcherImpl.dispatchAsyncInternal(DispatcherImpl.
                        > java:128)
                        > > >
                        > > > at
                        > > >
                        >
                        weblogic.jms.dispatcher.DispatcherImpl.dispatchOneWay(DispatcherImpl.java:31
                        > 2)
                        > > >
                        > > > at weblogic.jms.dispatcher.DispatcherImpl_WLSkel.invoke(Unknown
                        Source)
                        > > > at
                        weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
                        > > > at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
                        > > > at
                        > > >
                        >
                        weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubjec
                        > t.java:353)
                        > > >
                        > > > at
                        > > >
                        > weblogic.security.service.SecurityManager.runAs(SecurityManager.java:144)
                        > > > at
                        > > >
                        >
                        weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:415)
                        > > > at
                        > > >
                        >
                        weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:3
                        > 0)
                        > > >
                        > > > at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
                        > > > at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
                        > > > Caused by: java.lang.ClassNotFoundException:
                        > > > tuamo.monitoring.test.SecretException
                        > > > at java.net.URLClassLoader$1.run(URLClassLoader.java:199)
                        > > > at java.security.AccessController.doPrivileged(Native Method)
                        > > > at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
                        > > > at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
                        > > > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
                        > > > at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
                        > > > at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
                        > > > at java.lang.Class.forName0(Native Method)
                        > > > at java.lang.Class.forName(Class.java:219)
                        > > > at
                        > > >
                        >
                        weblogic.jms.common.ObjectMessageImpl$ObjectInputStream2.resolveClass(Object
                        > MessageImpl.java:305)
                        > > >
                        > > > at
                        > java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1513)
                        > > > at
                        java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1435)
                        > > > at
                        > > >
                        > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1626)
                        > > > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
                        > > > at
                        > java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1845)
                        > > > at
                        java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1769)
                        > > > at
                        > > >
                        > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1646)
                        > > > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1274)
                        > > > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:324)
                        > > > at
                        > > >
                        >
                        weblogic.jms.common.ObjectMessageImpl.getObject(ObjectMessageImpl.java:130)
                        > > >
                        > >
                        >
                        >