【问题标题】:stomp content-type header set to plain for xml contentstomp content-type 标头为 xml 内容设置为纯文本
【发布时间】:2011-12-25 11:48:32
【问题描述】:

我正在使用 stomp 从 ruby​​ 脚本向 ActiveMQ 发送 XML 内容

我明确地将内容类型标头设置为application/xml;charset=utf-8,如下所示

client.publish queue, xml, {'content-type'=>'application/xml;charset=utf-8'}

但是当我从使用 spring-integration 读取消息的 java 客户端读取消息时,内容类型是 text/plain。

因此,当调用 unmarshaller 时,解析失败并出现异常

1448446 [org.springframework.jms.listener.DefaultMessageListenerContainer#0-1] WARN org.springframework.jms.listener.DefaultMessageListenerContainer - Execution of JMS message listener failed
org.springframework.integration.transformer.MessageTransformationException: failed to transform message payload
    at org.springframework.integration.transformer.AbstractPayloadTransformer.transform(AbstractPayloadTransformer.java:40)
    at org.springframework.integration.transformer.MessageTransformingHandler.handleRequestMessage(MessageTransformingHandler.java:49)
    at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:91)
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:59)
    at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:103)
    at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:90)
    at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:43)
    at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:116)
    at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:94)
    at org.springframework.integration.channel.MessageChannelTemplate.doSend(MessageChannelTemplate.java:223)
    at org.springframework.integration.channel.MessageChannelTemplate.send(MessageChannelTemplate.java:180)
    at org.springframework.integration.router.AbstractMessageRouter.handleMessageInternal(AbstractMessageRouter.java:76)
    at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:59)
    at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:103)
    at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:90)
    at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:43)
    at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:116)
    at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:94)
    at org.springframework.integration.channel.MessageChannelTemplate.doSend(MessageChannelTemplate.java:223)
    at org.springframework.integration.channel.MessageChannelTemplate.send(MessageChannelTemplate.java:180)
    at org.springframework.integration.channel.MessageChannelTemplate.send(MessageChannelTemplate.java:168)
    at org.springframework.integration.jms.ChannelPublishingJmsMessageListener.onMessage(ChannelPublishingJmsMessageListener.java:203)
    at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:518)
    at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:479)
    at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:451)
    at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:323)
    at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:261)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:982)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:974)
    at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:876)
    at java.lang.Thread.run(Thread.java:680)
Caused by: org.springframework.integration.core.MessagingException: Failed to create Source for payload type [[B]
    at org.springframework.integration.xml.source.DomSourceFactory.createSource(DomSourceFactory.java:62)
    at org.springframework.integration.xml.transformer.XmlPayloadUnmarshallingTransformer.transformPayload(XmlPayloadUnmarshallingTransformer.java:91)
    at org.springframework.integration.transformer.AbstractPayloadTransformer.transform(AbstractPayloadTransformer.java:33)
    ... 30 more

可能是什么问题

【问题讨论】:

  • 从 Ruby 客户端读取时会发生什么?
  • @Mark,当从 ruby​​ 客户端读取时,内容被正确读取

标签: java ruby activemq spring-integration stomp


【解决方案1】:

找到了答案,它的标题suppress_content_length 添加它使其工作

:suppress_content_length => 真

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    • 2011-07-21
    • 2015-07-13
    相关资源
    最近更新 更多