Jboss JMS使用者无法解析在ObjectMessage中传递的对象的类

Jboss JMS使用者无法解析在ObjectMessage中传递的对象的类,jboss,jms,hornetq,Jboss,Jms,Hornetq,我正在使用JBossAS7,并试图通过JMS发送和接收对象。 这是我的密码: public void onMessage(Message m) { try { ObjectMessage ob=(ObjectMessage) m; Object o= ob.getObject(); System.out.println("siiiii"); //bm.readBytes(b); //Buffere

我正在使用JBossAS7,并试图通过JMS发送和接收对象。 这是我的密码:

    public void onMessage(Message m) { 
    try { 
        ObjectMessage ob=(ObjectMessage) m;
        Object o= ob.getObject();
        System.out.println("siiiii");
        //bm.readBytes(b);
        //BufferedOutputStream bos=new BufferedOutputStream(new BufferedWriter(b));
        //Dispositivo d = bm.
    } catch (JMSException  e) {
        e.printStackTrace();
        System.err.println("JMSException in onMessage(): " + e.toString());
    }
}
我得到了这些错误:

    avax.jms.JMSException: ebiga.procedureoperative.model.Dispositivo from [Module "org.hornetq:main" from local module loader @430ef1aa (roots: D:\Lavoro\jboss-as-7.1.1.Final\modules)]
19:09:41,919 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
19:09:41,922 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
19:09:41,930 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
19:09:41,943 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
19:09:41,950 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
19:09:41,984 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at java.lang.Class.forName0(Native Method)
19:09:41,990 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at java.lang.Class.forName(Unknown Source)
19:09:41,994 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at java.io.ObjectInputStream.resolveClass(Unknown Source)
19:09:41,997 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.hornetq.utils.ObjectInputStreamWithClassLoader.resolveClass(ObjectInputStreamWithClassLoader.java:71)
19:09:42,003 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
19:09:42,007 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at java.io.ObjectInputStream.readClassDesc(Unknown Source)
19:09:42,009 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
19:09:42,015 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at java.io.ObjectInputStream.readObject0(Unknown Source)
19:09:42,018 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at java.io.ObjectInputStream.readObject(Unknown Source)
19:09:42,022 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.hornetq.jms.client.HornetQObjectMessage.getObject(HornetQObjectMessage.java:158)
19:09:42,025 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at jms.ConsumerMessageListener.onMessage(ConsumerMessageListener.java:38)
19:09:42,034 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
19:09:42,037 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
19:09:42,040 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
19:09:42,043 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at java.lang.reflect.Method.invoke(Unknown Source)
19:09:42,046 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.as.ee.component.ManagedReferenceMethodInterceptorFactory$ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptorFactory.java:72)
19:09:42,053 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
19:09:42,056 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)
19:09:42,066 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:36)
19:09:42,071 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
19:09:42,074 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21)
19:09:42,079 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
19:09:42,082 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
19:09:42,086 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:53)
19:09:42,092 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
19:09:42,095 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.as.ejb3.component.pool.PooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:51)
19:09:42,101 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
19:09:42,106 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInCallerTx(CMTTxInterceptor.java:202)
19:09:42,110 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:306)
19:09:42,114 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:190)
19:09:42,121 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
19:09:42,125 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41)
19:09:42,128 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
19:09:42,131 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:59)
19:09:42,135 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
19:09:42,138 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50)
19:09:42,142 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
19:09:42,146 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:43)
19:09:42,168 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
19:09:42,171 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.as.ejb3.component.messagedriven.MessageDrivenComponentDescription$5$1.processInvocation(MessageDrivenComponentDescription.java:184)
19:09:42,176 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
19:09:42,197 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.as.ee.component.TCCLInterceptor.processInvocation(TCCLInterceptor.java:45)
19:09:42,202 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
19:09:42,206 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
19:09:42,210 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:165)
19:09:42,213 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.as.ee.component.ViewDescription$1.processInvocation(ViewDescription.java:173)
19:09:42,217 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
19:09:42,220 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
19:09:42,223 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.as.ee.component.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:72)
19:09:42,226 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at javax.jms.MessageListener$$$view19.onMessage(Unknown Source)
19:09:42,229 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
19:09:42,232 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
19:09:42,235 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
19:09:42,237 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at java.lang.reflect.Method.invoke(Unknown Source)
19:09:42,240 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.as.ejb3.inflow.MessageEndpointInvocationHandler.doInvoke(MessageEndpointInvocationHandler.java:140)
19:09:42,244 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.jboss.as.ejb3.inflow.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:73)
19:09:42,247 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at com.sun.proxy.$Proxy51.onMessage(Unknown Source)
19:09:42,250 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.hornetq.ra.inflow.HornetQMessageHandler.onMessage(HornetQMessageHandler.java:278)
19:09:42,252 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.hornetq.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:983)
19:09:42,255 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.hornetq.core.client.impl.ClientConsumerImpl.access$400(ClientConsumerImpl.java:48)
19:09:42,257 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.hornetq.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:1113)
19:09:42,259 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at org.hornetq.utils.OrderedExecutorFactory$OrderedExecutor$1.run(OrderedExecutorFactory.java:100)
19:09:42,262 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
19:09:42,265 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
19:09:42,268 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893))   at java.lang.Thread.run(Unknown Source)
19:09:42,269 ERROR [stderr] (Thread-15 (HornetQ-client-global-threads-202023893)) JMSException in onMessage(): javax.jms.JMSException: ebiga.procedureoperative.model.Dispositivo from [Module "org.hornetq:main" from local module loader @430ef1aa (roots: D:\Lavoro\jboss-as-7.1.1.Final\modules)]
似乎ObjectInputStream接受调用方法的类加载器。我不知道如何解决这个问题。 有人能帮我吗?
谢谢

该类必须在EJB中可见

在这种情况下,必须在类加载器上访问ebiga.procedureoperative.model.Dispositivo。。。或者在您的ejbjar上

测试这一点的一个好方法是尝试将这段代码添加到EJB Jar中:

new ebiga.procedureoperative.model.Dispositivo(); 
如果编译,它可能会在运行时失败

在ObjectMessage的情况下,所要做的就是为应用程序使用类加载器

另一方面:我一直建议用户无论如何都不要使用ObjectMessage。序列化在Java中是一种缓慢的方法。只有当您有大量可用的CPU,或者您的系统不需要大量的吞吐量时(回到第一个假设…大量可用的CPU),才可以使用它