Ошибка типа: ошибка № 1034: сбой приведения типа: невозможно преобразовать объект @ 1456c7b9 в mx.messaging.messages.IMessage - PullRequest
0 голосов
/ 21 ноября 2010

Я пытаюсь подключить Flash-клиент к BlazeDS.В этом были некоторые успехи от других, использующих установку Vanilla BlazeDS.Однако я использую новую интеграцию Spring BlazeDS из springsource и работаю на мели.Флэш-клиент на самом деле, кажется, работает, потому что я вижу правильные данные в теле возвращаемого объекта, но по неизвестной причине он не преобразуется в IMessage.Сбой в PollingChannel.as на этой строке с ошибкой в ​​строке темы

            var messageList:Array = msg.body as Array;
            for each (var message:IMessage in messageList)  <--

При загрузке приложения я регистрирую целую группу классов, например

registerClassAlias ​​("flex.messaging.messages.RemotingMessage ", RemotingMessage);registerClassAlias ​​("mx.messaging.messages.IMessage", IMessage);и т. д.

мой код в основном

        var channelSet:mx.messaging.ChannelSet = new mx.messaging.ChannelSet();
        var channel:mx.messaging.channels.AMFChannel = new AMFChannel("my-amf", "http://localhost:8400/SpringA/messagebroker/amf");
        channelSet.addChannel(channel);

        var consumer:mx.messaging.Consumer = new Consumer();
        consumer.channelSet = channelSet;
        consumer.destination = "simple-feed";
        consumer.subscribe();
        consumer.addEventListener(MessageEvent.MESSAGE, test);


    private function test(event:IMessage)
    {
        trace("msg..");
        // breakpoint never makes it here
    }

У меня есть гибкий клиент, который работает на 100% с тем же адресатом / каналом.

Ответы [ 4 ]

2 голосов
/ 21 ноября 2010

Ошибка в заголовке означает, что вы по какой-то причине получили объект, который не реализует или не расширяет интерфейс IMessage , поэтому цикл не может привести его к этой части:

for each (var message:IMessage in messageList){

Либо вы должны каким-то образом убедиться, что вы не добавляете ничего, что не расширяет или не реализует IMessage , или проверяете, действительно ли переменная IS ext./imp. Это. Кроме того - если вы хотите сделать это, вам придется изменить для каждого следующим образом:

for each (var obj in messageList){
    if (obj is IMessage){
        var message:IMessage = obj as IMessage;
        // DO STUFF HERE
    }
}
0 голосов
/ 05 июля 2018

У меня была такая же ошибка при попытке отправить объект actioncript в бэкэнд. Моя проблема заключалась в том, что в моем эквивалентном объекте c # отсутствовал открытый конструктор без параметров .

0 голосов
/ 06 декабря 2013

Если в ваших объектах Java VO вы переопределили метод hashcode (), это может произойти.

Удалите переопределение хэш-кода () (если вы можете).

Смотрите в моем блоге предысторию о том, как я это обнаружил.http://squaredi.blogspot.com/2013/12/remoting-landmine-without-stack-trace.html

0 голосов
/ 14 января 2012

Добавить этот объект сопоставления:

registerClassAlias("flex.messaging.io.ObjectProxy", ObjectProxy); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...