【问题标题】:NoClassDefFoundError while using Asynchronous http request使用异步 http 请求时出现 NoClassDefFoundError
【发布时间】: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


【解决方案1】:

我找到了方法:我必须编辑服务器库以包含丢失的文件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-09
    • 2012-03-09
    • 2011-01-08
    • 2016-11-15
    • 2012-04-03
    • 1970-01-01
    相关资源
    最近更新 更多