0

当我尝试在 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
        }
    }
}

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

谢谢。

4

1 回答 1

1

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

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

请参阅将自定义对象绑定到 JMS MapMessage

于 2013-04-03T16:41:50.740 回答