javax.jms.MessageFormatException:消息格式无效

时间:2013-04-03 12:43:24

标签: date jms java-ee-6 glassfish-3 message-queue

当我尝试在Glassfish 3.1 Open MQ上使用JMS在Date中发送MapMessage对象时,我收到以下错误:

javax.jms.MessageFormatException: [C4017]: Invalid message format.

以下是我尝试在Date中发送MapMessage对象的代码:

public class JSenderMockClient {
    public static void main(String[] args) {
        try {           
            //using jndiContext to get ConnectionFactory, Queue, Session and stuff

            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
            MessageProducer producer = session.createProducer(destination);

            MapMessage mapMessage = session.createMapMessage();
            mapMessage.setObject("now", new Date());

            producer.send(mapMessage);

            System.out.println("MapMessage \"now\" sent..");            
        } catch (Throwable ex) {
            //just in case stuff
        } finally {
            //closing session and connection
        }
    }
}

有人可以帮我理解为什么我会遇到这个例外吗?

感谢。

1 个答案:

答案 0 :(得分:1)

我认为MapMessage只支持字符串和原语。您可以将日期序列化为字符串,也可以使用ObjectMessage。

要序列化日期,您可以使用SimpleDateFormat

请参阅bind a custom object to a JMS MapMessage