Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring JMS模板发送无效消息_Java_Spring_Marshalling_Spring Jms - Fatal编程技术网

Java Spring JMS模板发送无效消息

Java Spring JMS模板发送无效消息,java,spring,marshalling,spring-jms,Java,Spring,Marshalling,Spring Jms,我在使用SpringJMSTemplate处理和发送JMS消息时遇到问题。所有内容都正确发送,但当我尝试查看队列中的消息时,消息的正文文本似乎都是乱码。我不确定在我的设置中哪里可能出了问题…我使用了与当前使用的相同的方法发送消息。以前有人见过这个吗 <!-- Non-pooled ConnectionFactory, don't use directly --> <jee:jndi-lookup id="jmsFactory" jndi-name="${jms.connecti

我在使用SpringJMSTemplate处理和发送JMS消息时遇到问题。所有内容都正确发送,但当我尝试查看队列中的消息时,消息的正文文本似乎都是乱码。我不确定在我的设置中哪里可能出了问题…我使用了与当前使用的相同的方法发送消息。以前有人见过这个吗

<!-- Non-pooled ConnectionFactory, don't use directly -->
<jee:jndi-lookup id="jmsFactory" jndi-name="${jms.connectionFactory}"/>

<!-- JMS Destinations -->
<jee:jndi-lookup id="emfTopic" jndi-name="${emf.topic.jndiPath}"/>

<!-- JMS Template for sending JMS Messages -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    <property name="connectionFactory" ref="connectionFactory"/>
    <property name="messageConverter" ref="messageConverter"/>
</bean>

<!-- A converter that marshalls/unmarshalls XML messages -->
<bean id ="messageConverter" class="org.springframework.jms.support.converter.MarshallingMessageConverter">
    <property name="marshaller" ref="jaxbMarshaller"/>
    <property name="unmarshaller" ref="jaxbMarshaller"/>
</bean>

<!-- JAXB Marshaller for JMS Messages -->
<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="classesToBeBound">
        <list>...`
以下是消息正文在发送后的外观片段:
00000000:3c3f 786d 6c20 7665 7273 696f 6e3d 2231.?xml版本。”1
00000010:2e30 2220 656e 636f 6469 6e67 3d22 5554.0“编码”。UT
00000020:462d 3822 2073 7461 6e64 616c 6f6e 653d F.8“独立式。
000000 30:2279 6573 223f 3e3c 7072 6f64 7563 7445“是”?产品

<!-- Non-pooled ConnectionFactory, don't use directly -->
<jee:jndi-lookup id="jmsFactory" jndi-name="${jms.connectionFactory}"/>

<!-- JMS Destinations -->
<jee:jndi-lookup id="emfTopic" jndi-name="${emf.topic.jndiPath}"/>

<!-- JMS Template for sending JMS Messages -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    <property name="connectionFactory" ref="connectionFactory"/>
    <property name="messageConverter" ref="messageConverter"/>
</bean>

<!-- A converter that marshalls/unmarshalls XML messages -->
<bean id ="messageConverter" class="org.springframework.jms.support.converter.MarshallingMessageConverter">
    <property name="marshaller" ref="jaxbMarshaller"/>
    <property name="unmarshaller" ref="jaxbMarshaller"/>
</bean>

<!-- JAXB Marshaller for JMS Messages -->
<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="classesToBeBound">
        <list>...`
我的模板和封送员设置如下:

<!-- Non-pooled ConnectionFactory, don't use directly -->
<jee:jndi-lookup id="jmsFactory" jndi-name="${jms.connectionFactory}"/>

<!-- JMS Destinations -->
<jee:jndi-lookup id="emfTopic" jndi-name="${emf.topic.jndiPath}"/>

<!-- JMS Template for sending JMS Messages -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    <property name="connectionFactory" ref="connectionFactory"/>
    <property name="messageConverter" ref="messageConverter"/>
</bean>

<!-- A converter that marshalls/unmarshalls XML messages -->
<bean id ="messageConverter" class="org.springframework.jms.support.converter.MarshallingMessageConverter">
    <property name="marshaller" ref="jaxbMarshaller"/>
    <property name="unmarshaller" ref="jaxbMarshaller"/>
</bean>

<!-- JAXB Marshaller for JMS Messages -->
<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="classesToBeBound">
        <list>...`

在此问题上的任何帮助都将不胜感激

Stéphane的评论就是问题所在。我没有显式地将targetType设置为TextMessage,因此它是作为ByItemMessage发送的,因为这是默认设置。更改targetType解决了此问题。

您是否可以共享您发送的消息,以检查两者之间是否存在任何关系。您没有提供足够的关于最重要部分的详细信息。您的封送员的目标类型是什么?请注意,
MarshallingMessageConverter
默认使用字节,因此您的xml文档将作为
BytesMessage
发送。如果要按原样发送XML,请将
targetType
设置为text(在
TextMessage
中)
<!-- Non-pooled ConnectionFactory, don't use directly -->
<jee:jndi-lookup id="jmsFactory" jndi-name="${jms.connectionFactory}"/>

<!-- JMS Destinations -->
<jee:jndi-lookup id="emfTopic" jndi-name="${emf.topic.jndiPath}"/>

<!-- JMS Template for sending JMS Messages -->
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    <property name="connectionFactory" ref="connectionFactory"/>
    <property name="messageConverter" ref="messageConverter"/>
</bean>

<!-- A converter that marshalls/unmarshalls XML messages -->
<bean id ="messageConverter" class="org.springframework.jms.support.converter.MarshallingMessageConverter">
    <property name="marshaller" ref="jaxbMarshaller"/>
    <property name="unmarshaller" ref="jaxbMarshaller"/>
</bean>

<!-- JAXB Marshaller for JMS Messages -->
<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="classesToBeBound">
        <list>...`