spring集成迁移3到4(JMS头问题)

spring集成迁移3到4(JMS头问题),spring,spring-integration,Spring,Spring Integration,我正在将一个web应用程序从Spring3.1迁移到4.1。我们使用: 框架, 整合,, 批次, 安全 和网络服务 在大多数情况下,这是一个相对无痛的过程;然而,我在集成的一个问题上陷入了困境。此JMS消息: GenericMessage[payload=com.etp.bpm.services.jaxwsbindings.data。ProcessActionInstance@50be7b46,标题={errorChannel=org.springframework.messaging.core

我正在将一个web应用程序从Spring3.1迁移到4.1。我们使用:

框架, 整合,, 批次, 安全 和网络服务

在大多数情况下,这是一个相对无痛的过程;然而,我在集成的一个问题上陷入了困境。此JMS消息:

GenericMessage[payload=com.etp.bpm.services.jaxwsbindings.data。ProcessActionInstance@50be7b46,标题={errorChannel=org.springframework.messaging.core.GenericMessageTemplate$TemporaryReplyChannel@98f5a14,jms_timestamp=1447280384929,determinateName=SeasonPeriod,replyChannel=org.springframework.messaging.core.GenericMessageTemplate$TemporaryReplyChannel@98f5a14,processActionName=DerivationExecutionAction,jms\u replyTo=HornetQQueue[asyncActionReplyQueue],jms_messageId=ID:4fd881ab-88c2-11e5-a7c1-a7dd640b56cc,时间戳=1447280384934,ID=505ca511-88d0-e892-acdf-9bdc4330e68f,JMSXDeliveryCount=1,jms_重新交付=false,优先级=4,行列式类型=[Raw],jms_correlationId=E82424;-3dab-4ef1-bad2-9EC7356A11,组=[主要决定因素组,10分钟,每周准备初始设置]]

是导致此错误的原因:

java.lang.Exception:“优先级”头值必须是整数

当spring尝试验证org.springframework.integration.IntegrationMessageHeaderAccessor中的头值时,将抛出错误,稍后该过程将失败:

else if (IntegrationMessageHeaderAccessor.SEQUENCE_NUMBER.equals(headerName)
                || IntegrationMessageHeaderAccessor.SEQUENCE_SIZE.equals(headerName)
                || IntegrationMessageHeaderAccessor.PRIORITY.equals(headerName)) {
            Assert.isTrue(Integer.class.isAssignableFrom(headerValue.getClass()), "The '" + headerName
                    + "' header value must be an Integer.");
        }
我们的应用程序中没有任何JMS代码。Spring创建并处理所有消息,那么它如何创建无法处理的头呢

我认为这可能是集成、集成jms和jms api之间的版本不匹配问题,但我已经准备好了所有正确的JAR。任何建议都将不胜感激。谢谢。(请参阅下面的堆栈跟踪)


不。它看起来像是上游添加了
优先级
头,但作为
,而不是
整数

这就是它停止工作的原因。版本不匹配没有什么特别的

只需扫描应用程序中的
优先级
单词,并尝试找出克服它的方法


其中一个建议可能类似于
前面的

否。看起来上游有人添加了
优先级
标题,但作为
,而不是
整数

这就是它停止工作的原因。版本不匹配没有什么特别的

只需扫描应用程序中的
优先级
单词,并尝试找出克服它的方法


其中一个建议可能类似于
前面的

早期版本的框架没有映射入站优先级

这是在4.0中添加的

根据,它应该是
int

但HornetQ似乎使用了其他东西(考虑到API,不完全确定如何使用)

作为一种解决方法,正如@Artem所说,您可以将其过滤掉,或者将入站标头映射器上的
mapInboundPriority
属性设置为
false
。我们添加了此布尔值,以防出现这样的问题

请打开一个调试器,以便我们能够准确地了解HornetQ将其设置为什么。或者您可以查看调试器

可能是一只大黄蜂虫


谢谢。

早期版本的框架没有映射入站优先级

这是在4.0中添加的

根据,它应该是
int

但HornetQ似乎使用了其他东西(考虑到API,不完全确定如何使用)

作为一种解决方法,正如@Artem所说,您可以将其过滤掉,或者将入站标头映射器上的
mapInboundPriority
属性设置为
false
。我们添加了此布尔值,以防出现这样的问题

请打开一个调试器,以便我们能够准确地了解HornetQ将其设置为什么。或者您可以查看调试器

可能是一只大黄蜂虫


谢谢。

谢谢你的输入。我确实扫描了应用程序的“优先级”,但我们没有设置任何消息的优先级。你怎么知道“优先级”标题被添加为一个长标题?好的。它甚至可能是
字符串
:-)。没关系。反正它不是
整数
。因此,如果它不是你的标题,那么它就不是你的外部系统为您提供它。例如,
jms\u replyTo=HornetQQueue[asyncActionReplyQueue]
。所以,你的应用程序中确实有一些JMS内容…@ArtemBilan-请看我的答案。我想我只是有这样的记忆:)谢谢你的输入。我确实扫描了应用程序的“优先级”,但我们没有设置任何消息的优先级。你怎么知道“优先级”标题被添加为一个长标题?好的。它没有即使是
字符串
:-)。也没关系。反正它不是
整数
。所以,如果它不是您的头,那么入站外部系统会为您提供它。例如
jms\u replyTo=HornetQQueue[asyncActionReplyQueue]
。所以,您的应用程序中确实有一些JMS内容…@ArtemBilan-请查看我的答案。我想我只是有了这样的内存:)
14:38:05,376 INFO  [stdout] (Deferred Command #8) java.lang.Exception: The 'priority' header value must be an Integer.

14:38:05,376 INFO  [stdout] (Deferred Command #8)   at org.springframework.util.Assert.isTrue(Assert.java:65)

14:38:05,377 INFO  [stdout] (Deferred Command #8)   at org.springframework.integration.IntegrationMessageHeaderAccessor.verifyType(IntegrationMessageHeaderAccessor.java:109)

14:38:05,377 INFO  [stdout] (Deferred Command #8)   at org.springframework.messaging.support.MessageHeaderAccessor.setHeader(MessageHeaderAccessor.java:308)

14:38:05,377 INFO  [stdout] (Deferred Command #8)   at org.springframework.messaging.support.MessageHeaderAccessor.copyHeaders(MessageHeaderAccessor.java:393)

14:38:05,377 INFO  [stdout] (Deferred Command #8)   at org.springframework.integration.support.MessageBuilder.copyHeaders(MessageBuilder.java:154)

14:38:05,377 INFO  [stdout] (Deferred Command #8)   at org.springframework.integration.support.MessageBuilder.copyHeaders(MessageBuilder.java:42)

14:38:05,377 INFO  [stdout] (Deferred Command #8)   at org.springframework.integration.jms.JmsOutboundGateway.handleRequestMessage(JmsOutboundGateway.java:691)

14:38:05,377 INFO  [stdout] (Deferred Command #8)   at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:99)

14:38:05,377 INFO  [stdout] (Deferred Command #8)   at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:78)

14:38:05,377 INFO  [stdout] (Deferred Command #8)   at org.springframework.integration.dispatcher.AbstractDispatcher.tryOptimizedDispatch(AbstractDispatcher.java:116)

14:38:05,377 INFO  [stdout] (Deferred Command #8)   at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:101)

14:38:05,377 INFO  [stdout] (Deferred Command #8)   at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:97)

14:38:05,377 INFO  [stdout] (Deferred Command #8)   at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:77)

14:38:05,377 INFO  [stdout] (Deferred Command #8)   at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:287)

14:38:05,377 INFO  [stdout] (Deferred Command #8)   at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:245)

14:38:05,378 INFO  [stdout] (Deferred Command #8)   at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:115)

14:38:05,378 INFO  [stdout] (Deferred Command #8)   at org.springframework.messaging.core.GenericMessagingTemplate.doSendAndReceive(GenericMessagingTemplate.java:150)

14:38:05,378 INFO  [stdout] (Deferred Command #8)   at org.springframework.messaging.core.GenericMessagingTemplate.doSendAndReceive(GenericMessagingTemplate.java:45)

14:38:05,378 INFO  [stdout] (Deferred Command #8)   at org.springframework.messaging.core.AbstractMessagingTemplate.sendAndReceive(AbstractMessagingTemplate.java:42)

14:38:05,378 INFO  [stdout] (Deferred Command #8)   at org.springframework.messaging.core.AbstractMessagingTemplate.convertSendAndReceive(AbstractMessagingTemplate.java:79)

14:38:05,378 INFO  [stdout] (Deferred Command #8)   at org.springframework.messaging.core.AbstractMessagingTemplate.convertSendAndReceive(AbstractMessagingTemplate.java:70)

14:38:05,378 INFO  [stdout] (Deferred Command #8)   at org.springframework.integration.gateway.MessagingGatewaySupport.doSendAndReceive(MessagingGatewaySupport.java:321)

14:38:05,378 INFO  [stdout] (Deferred Command #8)   at org.springframework.integration.gateway.MessagingGatewaySupport.sendAndReceive(MessagingGatewaySupport.java:298)

14:38:05,378 INFO  [stdout] (Deferred Command #8)   at org.springframework.integration.gateway.GatewayProxyFactoryBean.invokeGatewayMethod(GatewayProxyFactoryBean.java:414)

14:38:05,378 INFO  [stdout] (Deferred Command #8)   at org.springframework.integration.gateway.GatewayProxyFactoryBean.doInvoke(GatewayProxyFactoryBean.java:374)

14:38:05,378 INFO  [stdout] (Deferred Command #8)   at org.springframework.integration.gateway.GatewayProxyFactoryBean.invoke(GatewayProxyFactoryBean.java:365)

14:38:05,378 INFO  [stdout] (Deferred Command #8)   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)

14:38:05,379 INFO  [stdout] (Deferred Command #8)   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)

14:38:05,379 INFO  [stdout] (Deferred Command #8)   at com.sun.proxy.$Proxy129.executeAsyncAction(Unknown Source)

14:38:05,379 INFO  [stdout] (Deferred Command #8)   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

14:38:05,379 INFO  [stdout] (Deferred Command #8)   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

14:38:05,379 INFO  [stdout] (Deferred Command #8)   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

14:38:05,379 INFO  [stdout] (Deferred Command #8)   at java.lang.reflect.Method.invoke(Method.java:606)

14:38:05,379 INFO  [stdout] (Deferred Command #8)   at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)

14:38:05,379 INFO  [stdout] (Deferred Command #8)   at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)

14:38:05,379 INFO  [stdout] (Deferred Command #8)   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)

14:38:05,379 INFO  [stdout] (Deferred Command #8)   at org.springframework.aop.framework.adapter.MethodBeforeAdviceInterceptor.invoke(MethodBeforeAdviceInterceptor.java:52)

14:38:05,379 INFO  [stdout] (Deferred Command #8)   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:168)

14:38:05,379 INFO  [stdout] (Deferred Command #8)   at org.springframework.aop.aspectj.AspectJAfterAdvice.invoke(AspectJAfterAdvice.java:43)

14:38:05,379 INFO  [stdout] (Deferred Command #8)   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:168)

14:38:05,380 INFO  [stdout] (Deferred Command #8)   at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)

14:38:05,380 INFO  [stdout] (Deferred Command #8)   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)

14:38:05,380 INFO  [stdout] (Deferred Command #8)   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)

14:38:05,381 INFO  [stdout] (Deferred Command #8)   at com.sun.proxy.$Proxy232.executeAsyncAction(Unknown Source)

14:38:05,381 INFO  [stdout] (Deferred Command #8)   at com.etp.bpm.actionservice.BaseActionServiceInvocationCommand.sendRequest(BaseActionServiceInvocationCommand.java:165)

14:38:05,381 INFO  [stdout] (Deferred Command #8)   at com.etp.bpm.actionservice.AffinityCheckActionServiceInvocationCommand.executeCommand(AffinityCheckActionServiceInvocationCommand.java:94)

14:38:05,381 INFO  [stdout] (Deferred Command #8)   at com.etp.bpm.command.AbstractDeferredBpmCommand.call(AbstractDeferredBpmCommand.java:82)

14:38:05,381 INFO  [stdout] (Deferred Command #8)   at com.etp.bpm.command.AbstractDeferredBpmCommand.call(AbstractDeferredBpmCommand.java:1)

14:38:05,381 INFO  [stdout] (Deferred Command #8)   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

14:38:05,382 INFO  [stdout] (Deferred Command #8)   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

14:38:05,382 INFO  [stdout] (Deferred Command #8)   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

14:38:05,382 INFO  [stdout] (Deferred Command #8)   at java.lang.reflect.Method.invoke(Method.java:606)

14:38:05,382 INFO  [stdout] (Deferred Command #8)   at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)

14:38:05,382 INFO  [stdout] (Deferred Command #8)   at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)

14:38:05,382 INFO  [stdout] (Deferred Command #8)   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)

14:38:05,382 INFO  [stdout] (Deferred Command #8)   at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)

14:38:05,382 INFO  [stdout] (Deferred Command #8)   at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)

14:38:05,382 INFO  [stdout] (Deferred Command #8)   at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)

14:38:05,382 INFO  [stdout] (Deferred Command #8)   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)

14:38:05,382 INFO  [stdout] (Deferred Command #8)   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)

14:38:05,382 INFO  [stdout] (Deferred Command #8)   at com.sun.proxy.$Proxy233.call(Unknown Source)

14:38:05,382 INFO  [stdout] (Deferred Command #8)   at java.util.concurrent.FutureTask.run(FutureTask.java:262)

14:38:05,382 INFO  [stdout] (Deferred Command #8)   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

14:38:05,382 INFO  [stdout] (Deferred Command #8)   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

14:38:05,382 INFO  [stdout] (Deferred Command #8)   at java.lang.Thread.run(Thread.java:745)
headers.put(IntegrationMessageHeaderAccessor.PRIORITY, jmsMessage.getJMSPriority());