service-activator throws ClassCastException when receiving Rabbit message
I'm using spring integration with RabbitMQ AMQP and facing strange behavior.
I'm receiving messages over rabbitMQ from external service but the service
activator throws:
java.lang.ClassCastException:
org.springframework.context.expression.MapAccessor cannot be cast to
org.springframework.expression.PropertyAccessor
my code is running in EAR file deployed to Jboss. when I run the same
context XML from a unit test the message is received flawlessly.
setting a wiretap logger shows the message received as expected.
I'll appreciate any suggestions or thoughts that will guide me through this.
I'm using:
spring-expression-3.2.4
spring-integration-amqp-2.2.4
spring-integration-core-2.2.4
spring-rabbit-1.1.4
the application-context is :
<int-amqp:inbound-channel-adapter
id="firedJobInboundChannelAdapter"
channel="firedNotificationChannel"
queue-names="firedJob-jboss-Q"
connection-factory="rabbitConnectionFactory"
mapped-request-headers="*" />
<int:channel id="firedNotificationChannel" />
<int:json-to-object-transformer
input-channel="firedNotificationChannel"
output-channel="firedNotificationChannelObject"
type="com.company.scheduling.JobStringDataMap"/>
<int:channel id="firedNotificationChannelObject" />
<int:service-activator input-channel="firedNotificationChannelObject" >
<bean id="firedSchedulerJobReciverBean"
class="com.company.notifications.scheduler.gateway.FiredSchedulerJobReciver"/>
</int:service-activator>
The exception is (error reason is in bold):
2013-09-09 14:36:56,746 (SimpleAsyncTaskExecutor-1) WARN
[org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer]
Execution of Rabbit message listener failed, and no ErrorHandler has been
set.
org.springframework.amqp.rabbit.listener.ListenerExecutionFailedException:
Listener threw exception at
org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.wrapToListenerExecutionFailedExceptionIfNeeded(AbstractMessageListenerContainer.java:647)
at
org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:586)
at
org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:482)
at
org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$001(SimpleMessageListenerContainer.java:58)
at
org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$1.invokeListener(SimpleMessageListenerContainer.java:107)
at
org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.invokeListener(SimpleMessageListenerContainer.java:608)
at
org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.executeListener(AbstractMessageListenerContainer.java:454)
at
org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.doReceiveAndExecute(SimpleMessageListenerContainer.java:471)
at
org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.receiveAndExecute(SimpleMessageListenerContainer.java:455)
at
org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$300(SimpleMessageListenerContainer.java:58)
at
org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:548)
at java.lang.Thread.run(Thread.java:662) Caused by:
org.springframework.integration.MessageHandlingException:
java.lang.ClassCastException:
org.springframework.context.expression.MapAccessor cannot be cast to
org.springframework.expression.PropertyAccessor at
org.springframework.integration.handler.MethodInvokingMessageProcessor.processMessage(MethodInvokingMessageProcessor.java:76)
at
org.springframework.integration.handler.ServiceActivatingHandler.handleRequestMessage(ServiceActivatingHandler.java:67)
at
org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:134)
at
org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:73)
at
org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:115)
at
org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:102)
at
org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:77)
at
org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:157)
at
org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:128)
at
org.springframework.integration.core.MessagingTemplate.doSend(MessagingTemplate.java:288)
at
org.springframework.integration.core.MessagingTemplate.send(MessagingTemplate.java:149)
at
org.springframework.integration.handler.AbstractReplyProducingMessageHandler.sendMessage(AbstractReplyProducingMessageHandler.java:216)
at
org.springframework.integration.handler.AbstractReplyProducingMessageHandler.sendReplyMessage(AbstractReplyProducingMessageHandler.java:200)
at
org.springframework.integration.handler.AbstractReplyProducingMessageHandler.produceReply(AbstractReplyProducingMessageHandler.java:165)
at
org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleResult(AbstractReplyProducingMessageHandler.java:159)
at
org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:141)
at
org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:73)
at
org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:115)
at
org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:102)
at
org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:77)
at
org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:157)
at
org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:128)
at
org.springframework.integration.core.MessagingTemplate.doSend(MessagingTemplate.java:288)
at
org.springframework.integration.core.MessagingTemplate.send(MessagingTemplate.java:149)
at
org.springframework.integration.endpoint.MessageProducerSupport.sendMessage(MessageProducerSupport.java:92)
at
org.springframework.integration.amqp.inbound.AmqpInboundChannelAdapter.access$200(AmqpInboundChannelAdapter.java:41)
at
org.springframework.integration.amqp.inbound.AmqpInboundChannelAdapter$1.onMessage(AmqpInboundChannelAdapter.java:76)
at
org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:584)
... 10 more Caused by: java.lang.ClassCastException:
org.springframework.context.expression.MapAccessor cannot be cast to
org.springframework.expression.PropertyAccessor at
org.springframework.expression.spel.ast.PropertyOrFieldReference.getPropertyAccessorsToTry(PropertyOrFieldReference.java:330)
at
org.springframework.expression.spel.ast.PropertyOrFieldReference.readProperty(PropertyOrFieldReference.java:220)
at
org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:112)
at
org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:107)
at
org.springframework.expression.spel.ast.MethodReference.getValueRef(MethodReference.java:72)
at
org.springframework.expression.spel.ast.CompoundExpression.getValueRef(CompoundExpression.java:63)
at
org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:82)
at
org.springframework.expression.spel.ast.SpelNodeImpl.getTypedValue(SpelNodeImpl.java:102)
at
org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:103)
at
org.springframework.integration.util.AbstractExpressionEvaluator.evaluateExpression(AbstractExpressionEvaluator.java:126)
at
org.springframework.integration.util.MessagingMethodInvokerHelper.processInternal(MessagingMethodInvokerHelper.java:227)
at
org.springframework.integration.util.MessagingMethodInvokerHelper.process(MessagingMethodInvokerHelper.java:127)
at
org.springframework.integration.handler.MethodInvokingMessageProcessor.processMessage(MethodInvokingMessageProcessor.java:73)
... 37 more
No comments:
Post a Comment