【发布时间】:2013-09-19 12:12:15
【问题描述】:
在尝试将 JMS 与 MDB 队列结合时,我遇到了一个奇怪的问题。问题是我想向队列发送一个 JMS,并在接收到消息时,使 2 个异步 http get 到服务器。
我已成功设置队列并发送/接收消息。此外,我可以创建单个 http 或同步的,但是当我尝试执行异步 http get 时,我得到 NoClassDefFoundError。我一直在使用 Apache 示例类 hc.apache.org/httpcomponents-core-ga/httpcore-nio/examples/org/apache/http/examples/nio/NHttpClient.java
当用作 java 应用程序时它工作正常,但在尝试从 MDB 调用时出现 NoClassDefFOundError。
我正在使用 JBoss 6 和 Eclipse
13:55:54,073 错误 [STDERR] java.lang.NoClassDefFoundError: org/apache/http/nio/NHttpClientEventHandler
13:55:54,073 错误 [STDERR] 在 com.mdb.QueueListenerMDB.onMessage(QueueListenerMDB.java:59)
13:55:54,074 错误 [STDERR] 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
13:55:54,074 错误 [STDERR] 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
13:55:54,074 错误 [STDERR] 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
13:55:54,074 错误 [STDERR] 在 java.lang.reflect.Method.invoke(Method.java:597)
13:55:54,075 错误 [STDERR] 在 org.jboss.aop.joinpoint.MethodInvocation.invokeTarget(MethodInvocation.java:122)
13:55:54,075 错误 [STDERR] 在 org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:111)
13:55:54,075 错误 [STDERR] 在 org.jboss.ejb3.interceptors.container.ContainerMethodInvocationWrapper.invokeNext(ContainerMethodInvocationWrapper.java:72)
13:55:54,076 错误 [STDERR] 在 org.jboss.ejb3.interceptors.aop.InterceptorSequencer.invoke(InterceptorSequencer.java:76)
13:55:54,076 org.jboss.ejb3.interceptors.aop.InterceptorSequencer.aroundInvoke(InterceptorSequencer.java:62) 的错误 [STDERR]
13:55:54,077 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 处的错误 [STDERR]
13:55:54,077 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 处的错误 [STDERR]
13:55:54,077 错误 [STDERR] 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
13:55:54,077 错误 [STDERR] 在 java.lang.reflect.Method.invoke(Method.java:597)
13:55:54,078 org.jboss.aop.advice.PerJoinpointAdvice.invoke(PerJoinpointAdvice.java:174) 中的错误 [STDERR]
13:55:54,078 org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 处的错误 [STDERR]
13:55:54,079 错误 [STDERR] 在 org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.fillMethod(InvocationContextInterceptor.java:74)
13:55:54,079 错误 [STDERR] 在 org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor_z_fillMethod_1427582905.invoke(InvocationContextInterceptor_z_fillMethod_1427582905.java)
13:55:54,080 org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 的错误 [STDERR]
13:55:54,080 错误 [STDERR] 在 org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.setup(InvocationContextInterceptor.java:90)
org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor_z_setup_1427582905.invoke(InvocationContextInterceptor_z_setup_1427582905.java) 的 13:55:54,080 错误 [STDERR]
13:55:54,080 org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 的错误 [STDERR]
13:55:54,081 org.jboss.ejb3.async.impl.interceptor.AsynchronousServerInterceptor.invoke 的错误 [STDERR](AsynchronousServerInterceptor.java:110)
13:55:54,081 错误 [STDERR] 在 org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
13:55:54,081 错误 [STDERR] 在 org.jboss.ejb3.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:62)
13:55:54,081 错误 [STDERR] 在 org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
13:55:54,082 org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:56) 的错误 [STDERR]
13:55:54,082 org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 的错误 [STDERR]
13:55:54,082 org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47) 的错误 [STDERR]
13:55:54,082 org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 的错误 [STDERR]
13:55:54,083 错误 [STDERR] 在 org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42)
13:55:54,083 错误 [STDERR] 在 org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
13:55:54,084 错误 [STDERR] 在 org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:68)
13:55:54,085 错误 [STDERR] 在 org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
13:55:54,085 错误 [STDERR] 在 org.jboss.ejb3.core.context.InvocationContextAdapter.proceed(InvocationContextAdapter.java:70)
13:55:54,085 错误 [STDERR] 在 org.jboss.ejb3.tx2.impl.CMTTxInterceptor.invokeInCallerTx(CMTTxInterceptor.java:223)
13:55:54,085 错误 [STDERR] 在 org.jboss.ejb3.tx2.impl.CMTTxInterceptor.required(CMTTxInterceptor.java:353)
13:55:54,086 错误 [STDERR] 在 org.jboss.ejb3.tx2.impl.CMTTxInterceptor.invoke(CMTTxInterceptor.java:209)
org.jboss.ejb3.tx2.aop.CMTTxInterceptorWrapper.invoke(CMTTxInterceptorWrapper.java:52) 中的 13:55:54,086 错误 [STDERR]
13:55:54,086 错误 [STDERR] 在 org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
13:55:54,086 错误 [STDERR] 在 org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42)
13:55:54,087 错误 [STDERR] 在 org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
13:55:54,087 错误 [STDERR] 在 org.jboss.ejb3.security.Ejb3AuthenticationInterceptorv2.invoke(Ejb3AuthenticationInterceptorv2.java:79)
13:55:54,089 错误 [STDERR] 在 org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
13:55:54,089 org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContainerShutdownInterceptor.java:67) 的错误 [STDERR]
13:55:54,089 错误 [STDERR] 在 org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
13:55:54,090 错误 [STDERR] 在 org.jboss.ejb3.core.context.CurrentInvocationContextInterceptor.invoke(CurrentInvocationContextInterceptor.java:47)
13:55:54,090 org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102) 处的错误 [STDERR]
13:55:54,090 org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67) 的错误 [STDERR]
13:55:54,091 错误 [STDERR] 在 org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
13:55:54,091 错误 [STDERR] 在 org.jboss.ejb3.interceptor.EJB3TCCLInterceptor.invoke(EJB3TCCLInterceptor.java:86)
13:55:54,091 错误 [STDERR] 在 org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
13:55:54,092 org.jboss.ejb3.mdb.MessagingContainer.localInvoke(MessagingContainer.java:306) 的错误 [STDERR]
13:55:54,092 错误 [STDERR] 在 org.jboss.ejb3.mdb.inflow.MessageInflowLocalProxy.delivery(MessageInflowLocalProxy.java:299)
13:55:54,092 org.jboss.ejb3.mdb.inflow.MessageInflowLocalProxy.invoke(MessageInflowLocalProxy.java:152) 的错误 [STDERR]
13:55:54,093 错误 [STDERR] 在 $Proxy130.onMessage(未知来源)
13:55:54,093 错误 [STDERR] 在 org.hornetq.ra.inflow.HornetQMessageHandler.onMessage(HornetQMessageHandler.java:256)
13:55:54,094 错误 [STDERR] 在 org.hornetq.core.client.impl.ClientConsumerImpl.callOnMessage(ClientConsumerImpl.java:822)
13:55:54,094 错误 [STDERR] 在 org.hornetq.core.client.impl.ClientConsumerImpl.access$100(ClientConsumerImpl.java:46)
13:55:54,095 错误 [STDERR] 在 org.hornetq.core.client.impl.ClientConsumerImpl$Runner.run(ClientConsumerImpl.java:940)
13:55:54,095 错误 [STDERR] 在 org.hornetq.utils.OrderedExecutorFactory$OrderedExecutor$1.run(OrderedExecutorFactory.java:100)
13:55:54,095 错误 [STDERR] 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
13:55:54,096 错误 [STDERR] 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
13:55:54,098 错误 [STDERR] 在 java.lang.Thread.run(Thread.java:662)
13:55:54,098 错误 [STDERR] 原因:java.lang.ClassNotFoundException: org.apache.http.nio.NHttpClientEventHandler from BaseClassLoader@72d47b5a{vfs:///C:/Users/Guillermo/Documents/Workspace %20Eclipse/.metadata/.plugins/org.jboss.ide.eclipse.as.core/JBoss_6.0_Runtime_Server1379590260770/deploy/FirstMDBProyect.jar}
13:55:54,099 错误 [STDERR] 在 org.jboss.classloader.spi.base.BaseClassLoader.loadClass(BaseClassLoader.java:480)
13:55:54,099 错误 [STDERR] 在 java.lang.ClassLoader.loadClass(ClassLoader.java:247)
13:55:54,099 错误 [STDERR] ... 64 更多
任何帮助将不胜感激!
谢谢!
【问题讨论】:
-
请查看wso2.com/mailarchive/dev/2013-March/016528.html,它看起来像一个类似的问题(与 JMS/MDB 无关,但与 Commons Httpclient jar 的版本有关)。
-
谢谢,但我已经看过该页面,很遗憾无法解决我的问题
-
值得一试:)
标签: eclipse asynchronous jboss jms message-driven-bean