Буду признателен за любую помощь в этом ...
У меня есть объект, который я пытаюсь отправить в JMS ObjectMessage, вызвав setObject.Этот объект содержит содержимое HashMap, а также некоторые другие поля.Когда карта содержит примитивные элементы, сообщение строится нормально.Аналогично, если я добавлю не примитивное сериализуемое поле в Object, оно также отправит ok.
Вот в чем проблема: Всякий раз, когда я пытаюсь добавить сериализуемый непримитивный объект в MAP, я получаю следующее MessageFormatException:
javax.jms.MessageFormatException: Only objectified primitive objects, String,
Map and List types are allowed but was: com.abc.ObjectInList
Javadoc для ObjectMessage указывает ...
Можно использовать только сериализуемые объекты Java.
... check.И ...
Если необходимо отправить коллекцию объектов Java, можно использовать один из классов Collection, предоставленных начиная с JDK 1.2.
... двойная проверка,Хотя это ничего конкретно не говорит о сериализуемых объектах в коллекции, я предполагаю, что это будет поддерживаться.Я что-то здесь не так делаю?Нужно ли просто прикусить пулю и создать новое поле в моем объекте верхнего уровня, чтобы мне не нужно было помещать его в коллекцию?
Использование ActiveMQ 5.2.Далее следует соответствующая трассировка стека.
2011-08-01 21: 06: 05,767 ОШИБКА javax.jms.MessageFormatException: разрешены только объективированные объекты-примитивы, типы String, Map и List, но было: com.abc.engine.ejb.BasicSchedule@58f295b9 тип: класс c om.abc.engine.ejb.BasicSchedule 2011-08-01 21: 06: 05,767 ОШИБКА в org.apache.activemq.command.ActiveMQMessage.checkValidObject (ActiveMQMessage.java:468) 2011-08-01 21: 06: 05,767 ОШИБКА в org.apache.activemq.command.ActiveMQMapMessage.setObject (ActiveMQMapMessage.java:705) 2011-08-01 21: 06: 05,767 ОШИБКА в com.abc.chronicle.ejb.ChronicleMessageBean.initMessage (ChronicleMessageBean.java:149) 2011-08-01 21: 06: 05,767 ОШИБКА в com.abc.chronicle.ejb.ChronicleMessageBean.send (ChronicleMessageBean.java:126 2011-08-01 2011-01-01: 05,767 ОШИБКА в com.abc.chronicle.ejb.ChronicleMessageBean.onMessage (ChronicleMessageBean.java:77) 2011-08-01 21: 06: 05,767 ОШИБКА в sun.reflect.NativeMethodAccessorImpl.invoke0 (родной метод) 2011-08-0121: 06: 05,768 ОШИБКА в сun.reflect.: Разрешены только объективированные примитивные объекты, типы String, Ma p и List, но был: com.abc.engine.ejb.BasicSchedule@1003b2df тип: class com.abc.engine.ejb.BasicSchedule 2011-08-01 21:06:05,778 ОШИБКА javax.jms.MessageFormatException: разрешены только объективированные примитивные объекты, типы String, Map и List, но было: com.abc.engine.ejb.BasicSchedule@1003b2df тип: class c om.abc.engine.ejb.BasicSchedule 2011-08-01 21: 06: 05,778 ОШИБКА в org.apache.activemq.command.ActiveMQMessage.checkValidObject (ActiveMQMessage.java:468) 2011-08-01 21: 06: 05,778 ОШИБКА в org.apache.activemq.command.ActiveMQMapMessage.setObject (ActiveMQMapMessage.java:705) 2011-08-01 21: 06: 05,778 ОШИБКА на com.abc.chronicle.ejb.ChronicleMessageBean.initMessage (ChronicleMessageBean.java:149) 2011-08-01 21: 06: 05,778 ОШИБКА на com.abc.chronicle.ejb.ChronicleMessageBean.send (ChronicleMessageBean.java:125) 2011-08-01 21: 06: 05,778 ОШИБКА на com.abc.chronicle.ejb.ChronicleMessageBean.onMessage (ChronicleMessageBean.java:77)