JBoss Community

HornetQ can't resolve class of ObjectMessage payload.

created by Kevin Healy in JBoss Messaging - View the full discussion

Following is my environment

 

JBossAS [6.0.0.Final "Neo"]

HornetQ Server version 2.1.2.Final (Colmeia, 120)

 

I'm getting the same error described here

 

http://community.jboss.org/message/517604#517604

 

and here

 

http://community.jboss.org/thread/162024

 

 

Specifically, HornetQ is unable to resolve the class of an object that serves as the payload of an ObjectMessage.

 

The exception and stack trace are as follows:

 

477 SEVERE [toplevel.services.push.ProxyMessageListener] Caught Exception processing incoming message:  javax.jms.JMSException: toplevel.services.heartbeat.Heartbeat

01:18:36,477 ERROR [STDERR] javax.jms.JMSException: toplevel.services.heartbeat.Heartbeat

 

01:18:36,477 ERROR [STDERR]     at java.net.URLClassLoader$1.run(URLClassLoader.java:202)

 

01:18:36,477 ERROR [STDERR]     at java.security.AccessController.doPrivileged(Native Method)

 

01:18:36,477 ERROR [STDERR]     at java.net.URLClassLoader.findClass(URLClassLoader.java:190)

 

01:18:36,477 ERROR [STDERR]     at java.lang.ClassLoader.loadClass(ClassLoader.java:307)

 

01:18:36,493 ERROR [STDERR]     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)

 

01:18:36,493 ERROR [STDERR]     at java.lang.ClassLoader.loadClass(ClassLoader.java:248)

 

01:18:36,493 ERROR [STDERR]     at java.lang.Class.forName0(Native Method)

 

01:18:36,493 ERROR [STDERR]     at java.lang.Class.forName(Class.java:247)

 

01:18:36,493 ERROR [STDERR]     at org.jboss.classloader.spi.base.BaseClassLoaderDomain.loadClass(BaseClassLoaderDomain.java:284)

 

01:18:36,493 ERROR [STDERR]     at org.jboss.classloader.spi.base.BaseClassLoaderDomain.loadClass(BaseClassLoaderDomain.java:1152)

 

01:18:36,493 ERROR [STDERR]     at org.jboss.classloader.spi.base.BaseClassLoader.loadClassFromDomain(BaseClassLoader.java:886)

 

01:18:36,493 ERROR [STDERR]     at org.jboss.classloader.spi.base.BaseClassLoader.doLoadClass(BaseClassLoader.java:505)

 

01:18:36,493 ERROR [STDERR]     at org.jboss.classloader.spi.base.BaseClassLoader.loadClass(BaseClassLoader.java:450)

 

01:18:36,493 ERROR [STDERR]     at java.lang.ClassLoader.loadClass(ClassLoader.java:248)

 

01:18:36,493 ERROR [STDERR]     at java.lang.Class.forName0(Native Method)

 

01:18:36,493 ERROR [STDERR]     at java.lang.Class.forName(Class.java:247)

 

01:18:36,493 ERROR [STDERR]     at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:603)

 

01:18:36,493 ERROR [STDERR]     at org.hornetq.utils.ObjectInputStreamWithClassLoader.resolveClass(ObjectInputStreamWithClassLoader.java:69)

 

01:18:36,493 ERROR [STDERR]     at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1574)

 

01:18:36,493 ERROR [STDERR]     at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1495)

 

01:18:36,493 ERROR [STDERR]     at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1731)

 

01:18:36,493 ERROR [STDERR]     at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)

 

01:18:36,493 ERROR [STDERR]     at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)

 

01:18:36,493 ERROR [STDERR]     at org.hornetq.jms.client.HornetQObjectMessage.getObject(HornetQObjectMessage.java:158)

 

01:18:36,493 ERROR [STDERR]     at gov.dhs.st.bordernet.services.push.ProxyMessageListener.onMessage(ProxyMessageListener.java:71)

 

01:18:36,493 ERROR [STDERR]     at org.hornetq.jms.client.JMSMessageListenerWrapper.onMessage(JMSMessageListenerWrapper.java:91)

 

01:18:36,493 ERROR [STDERR]     at org.hornetq.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:822)

 

01:18:36,493 ERROR [STDERR]     at org.hornetq.core.client.impl.ClientConsumerImpl.access$100(ClientConsumerImpl.java:46)

 

01:18:36,493 ERROR [STDERR]     at org.hornetq.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:940)

 

01:18:36,493 ERROR [STDERR]     at org.hornetq.utils.OrderedExecutorFactory$OrderedExecutor$1.run(OrderedExecutorFactory.java:100)

 

01:18:36,493 ERROR [STDERR]     at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

 

01:18:36,493 ERROR [STDERR]     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

 

01:18:36,493 ERROR [STDERR]     at java.lang.Thread.run(Thread.java:662)

 

 

HornetQ is able to resolve the class of an ObjectMessage when my receiving client is an MDB but not when it is a client MessageListener that I have deployed as part of a JBoss system service.

 

Following is a representative view of the package structure of my deployment

 

 

my.ear

|

|

|--------> payload-objects.jar

|    |

|    |--------> class(es) used as payload of ObjectMessage located here (and below.)

|

|--------> my-ejb.jar

|    |

|    |--------> my-service.xml

|    |

|    |--------> toplevel

|    |    |

|    |    |--------> mdb

|    |    |     |

|    |    |     |--------> MDB's located here (and below.)  HornetQ references to classes in payload-objects.jar resolve fine.

|    |    |

|    |    |--------> services

|    |          |

|    |          |--------> Other MessageListeners located here (and below.) HornetQ references to classes in payload-objects.jar fail!

|

|--------> my-war.war

      |

      |--------> WEB-INF

           |

           |--------> classes

           |    |

           |    |--------> no HornetQ MessageListeners here (or below) but other references to classes in payload-objects.jar here (and below) resolve fine.

           |

           |--------> lib

                |

                |--------> payload-objects.jar

 

 

Please advise.

 

 

Kevin H.

Reply to this message by going to Community

Start a new discussion in JBoss Messaging at Community