[
https://issues.apache.org/jira/browse/TOMEE-2004?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Jonathan S Fisher updated TOMEE-2004:
-------------------------------------
Priority: Minor (was: Major)
> Strange compilation issue, receive an AbstractMethodError when receiving a
> message in an Arquillian test
> --------------------------------------------------------------------------------------------------------
>
> Key: TOMEE-2004
> URL: https://issues.apache.org/jira/browse/TOMEE-2004
> Project: TomEE
> Issue Type: Bug
> Reporter: Jonathan S Fisher
> Priority: Minor
>
> Given this message listener:
> {code}
> @MessageDriven(activationConfig = {
> @ActivationConfigProperty(propertyName = "destination", propertyValue
> = "org.apache.tomee.test"),
> @ActivationConfigProperty(propertyName = "maxSessions", propertyValue
> = "1"), })
> public class TestMessageListener implements MessageListener {
> public static final List<String> strings = Collections
> .synchronizedList(new LinkedList<>());
> @Override
> public void onMessage(Message message) {
> try {
> String payload = message.getBody(String.class);
> System.out.println(payload);
> strings.add(payload);
> } catch (JMSException e) {
> throw new RuntimeException(e);
> }
> }
> }
> {code}
> And this test:
> {code}
> @RunWith(Arquillian.class)
> public class TestMessageListenerTest {
> @Deployment
> public static Archive<?> createTestArchive() {
> return ShrinkWrap.create(WebArchive.class)
> .addPackage(TestMessageListener.class.getPackage());
> }
> @Test
> public void testSendMessage(JMSContext jmsContext) throws Exception {
> String destinationName = "org.apache.tomee.test";
> Destination destination = jmsContext.createQueue(destinationName);
> jmsContext.createProducer().send(destination, "test message");
> Thread.sleep(1000L);
> assertTrue(TestMessageListener.strings.size() > 1);
> }
> }
> {code}
> You will get this stack trace. Oddly enough this works if you deploy it to
> an actual server:
> {quote}
> INFO: Successfully established connection to broker [vm://jvm_broker]
> Jan 25, 2017 12:22:49 PM org.apache.geronimo.connector.work.WorkerContext run
> INFO: Removing non-required WorkContextHandler with no context:
> org.apache.geronimo.connector.work.TransactionContextHandler@1e218814
> Jan 25, 2017 12:22:49 PM org.apache.geronimo.connector.work.WorkerContext run
> INFO: Removing non-required WorkContextHandler with no context:
> org.apache.openejb.core.security.SecurityContextHandler@10e665a0
> Jan 25, 2017 12:22:49 PM org.apache.geronimo.connector.work.WorkerContext run
> INFO: Removing non-required WorkContextHandler with no context:
> org.apache.geronimo.connector.work.HintsContextHandler@14d9e364
> Jan 25, 2017 12:22:49 PM
> org.apache.openejb.core.transaction.EjbTransactionUtil handleSystemException
> SEVERE: EjbTransactionUtil.handleSystemException:
> org.apache.activemq.command.ActiveMQTextMessage.getBody(Ljava/lang/Class;)Ljava/lang/Object;
> java.lang.AbstractMethodError:
> org.apache.activemq.command.ActiveMQTextMessage.getBody(Ljava/lang/Class;)Ljava/lang/Object;
> at
> com.tomitribe.training.jms.TestMessageListener.onMessage(TestMessageListener.java:23)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at
> org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:205)
> at
> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:186)
> at
> org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:181)
> at
> org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:100)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at
> org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:205)
> at
> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:186)
> at
> org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:85)
> at
> org.apache.openejb.core.mdb.MdbContainer._invoke(MdbContainer.java:409)
> at
> org.apache.openejb.core.mdb.MdbContainer.invoke(MdbContainer.java:383)
> at
> org.apache.openejb.core.mdb.EndpointHandler.deliverMessage(EndpointHandler.java:228)
> at
> org.apache.openejb.core.mdb.EndpointHandler.invoke(EndpointHandler.java:169)
> at
> com.tomitribe.training.jms.TestMessageListener$$LocalBeanProxy.onMessage(com/tomitribe/training/jms/TestMessageListener.java)
> at
> org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.onMessage(MessageEndpointProxy.java:123)
> at
> org.apache.activemq.ra.MessageEndpointProxy.onMessage(MessageEndpointProxy.java:64)
> at org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:1041)
> at
> org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:169)
> at
> org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java:366)
> at
> org.apache.geronimo.connector.work.pool.NamedRunnable.run(NamedRunnable.java:32)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> at java.lang.Thread.run(Thread.java:745)
> java.rmi.RemoteException: The bean encountered a non-application exception;
> nested exception is:
> java.lang.AbstractMethodError:
> org.apache.activemq.command.ActiveMQTextMessage.getBody(Ljava/lang/Class;)Ljava/lang/Object;
> at
> org.apache.openejb.core.transaction.EjbTransactionUtil.handleSystemException(EjbTransactionUtil.java:155)
> at
> org.apache.openejb.core.mdb.MdbContainer._invoke(MdbContainer.java:427)
> at
> org.apache.openejb.core.mdb.MdbContainer.invoke(MdbContainer.java:383)
> at
> org.apache.openejb.core.mdb.EndpointHandler.deliverMessage(EndpointHandler.java:228)
> at
> org.apache.openejb.core.mdb.EndpointHandler.invoke(EndpointHandler.java:169)
> at
> com.tomitribe.training.jms.TestMessageListener$$LocalBeanProxy.onMessage(com/tomitribe/training/jms/TestMessageListener.java)
> at
> org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.onMessage(MessageEndpointProxy.java:123)
> at
> org.apache.activemq.ra.MessageEndpointProxy.onMessage(MessageEndpointProxy.java:64)
> at org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:1041)
> at
> org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:169)
> at
> org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java:366)
> at
> org.apache.geronimo.connector.work.pool.NamedRunnable.run(NamedRunnable.java:32)
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> at java.lang.Thread.run(Thread.java:745)
> Caused by: java.lang.AbstractMethodError:
> org.apache.activemq.command.ActiveMQTextMessage.getBody(Ljava/lang/Class;)Ljava/lang/Object;
> at
> com.tomitribe.training.jms.TestMessageListener.onMessage(TestMessageListener.java:23)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at
> org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:205)
> at
> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:186)
> at
> org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:181)
> at
> org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:100)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at
> org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:205)
> at
> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:186)
> at
> org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:85)
> at
> org.apache.openejb.core.mdb.MdbContainer._invoke(MdbContainer.java:409)
> ... 13 more
> {quote}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)