Obiekt z kolekcją zawierającą możliwe do serializacji, nieprymitywne obiekty nie może być ustawiony jako ActiveMQ ObjectMessage

Byłbym wdzięczny za pomoc w tym…

Mam obiekt, który próbuję wysłać w JMS ObjectMessage, wywołując setObject. Ten obiekt zawiera zawartość HashMap, a także kilka innych pól. Kiedy mapa zawiera elementy prymitywne, wiadomość jest dobrze zbudowana. Podobnie, jeśli dodam do Object nieprymitywne pole, które można serializować, również wysyła w porządku.

Oto rub: Za każdym razem, gdy próbuję dodać serializowalny, nieprymitywny obiekt do MAP, otrzymuję następujący MessageFormatException:

javax.jms.MessageFormatException: Only objectified primitive objects, String, 
Map and List types are allowed but was: com.abc.ObjectInList

javadoc dla ObjectMessage określa ...

Można używać tylko serializowalnych obiektów Java.

... szach. I ...

Jeśli trzeba wysłać kolekcję obiektów Java, można użyć jednej z klas Collection udostępnionych od JDK 1.2.

... sprawdź dwukrotnie. Chociaż nie mówi to nic o obiektach, które można serializować w kolekcji, przypuszczam, że byłoby to obsługiwane. Czy ja tu robię coś złego? Czy mam po prostu gryźć punktor i tworzyć nowe pole w moim obiekcie najwyższego poziomu, aby nie musieć umieszczać go w Kolekcji?

Używając ActiveMQ 5.2. Następuje stosowne śledzenie stosu.

2011-08-01 21: 06: 05,767 BŁĄD javax.jms.MessageFormatException: Dozwolone są tylko zobiektywizowane obiekty prymitywne, typy ciągów, mapy i listy, ale było to: com.abc.engine.ejb. BasicSchedule @ 58f295b9 typ: klasa c om.abc.engine.ejb.BasicSchedule 2011-08-01 21: 06: 05 767 ERROR at org.apache.activemq.command.ActiveMQMessage.checkValidObject (ActiveMQMessage.java:468) 2011-08-01 21: 06: 05 767 ERROR at org.apache.activemq.command.ActiveMQMapMessage.setObject (ActiveMQMapMessage.java:705) 2011-08-01 21: 06: 05,767 ERROR at com.abc.chronicle.ejb.ChronicleMessageBean.initMessage (ChronicleMessageBean.java:149) 2011-08-01 21: 06: 05,767 ERROR at com.abc.chronicle.ejb.ChronicleMessageBean.send (ChronicleMessageBean.java:125) 2011-08-01 21: 06: 05,767 ERROR at com.abc.chronicle.ejb.ChronicleMessageBean.onMessage (ChronicleMessageBean.java:77) 2011-08-01 21: 06: 05,767 ERROR at sun.reflect.NativeMethodAccessorImpl.invoke0 (metoda macierzysta) 2011-08-01 21: 06: 05,768 ERROR at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39) 2011-08-01 21: 06: 05,777 ERROR [com.abc.chronicle.ejb.ChronicleMessageBean] JMS Exception o wysyłaniu wiadomości do SDK.OUTGOING_NOTIFICATION: javax.jms.MessageFormatException: Tylko zobiektywizowane obiekty prymitywne, String, Ma p i typy list są dozwolone, ale były: com.abc.engine.ejb.BasicSchedule@1003b2df type: class com.abc.engine.ejb.BasicSchedule 2011-08-01 21: 06: 05,778 BŁĄD javax.jms.MessageFormatException: Dozwolone są tylko zobiektywizowane obiekty prymitywne, typy String, Map i List, ale było to: com.abc.engine.ejb.BasicSchedule@1003b2df typ: klasa c om.abc.engine.ejb.BasicSchedule 2011-08-01 21: 06: 05 778 BŁĄD w org.apache.activemq.command.ActiveMQMessage.checkValidObject (ActiveMQMessage.java:468) 2011-08-01 21: 06: 05 778 ERROR w org.apache.activemq.command.ActiveMQMapMessage.setObject (ActiveMQMapMessage.java:705) 2011-08-01 21: 06: 05 778 ERROR at com.abc.chronicle.ejb.ChronicleMessageBean.initMessage (ChronicleMessageBean.java:149) 2011-08-01 21: 06: 05,778 BŁĄD w com.abc.chronicle.ejb.ChronicleMessageBean.send (ChronicleMessageBean.java:125) 2011-08-01 21: 06: 05,778 ERROR at com.abc.chronicle.ejb.ChronicleMessageBean.onMessage (ChronicleMessageBean.java:77)

6
задан jpredham 1 August 2011 в 21:16
поделиться