Как я могу отладить сериализацию AMF (BlazeDS) объектов Java в Actionscript? - PullRequest
7 голосов
/ 11 июня 2009

Я использую BlazeDS для удаленного доступа к некоторым объектам Java, которые я использую в приложении Flex. Я получаю ошибку приведения типов с одним из моих классов, который не могу понять на всю жизнь. У меня есть другие классы, которые работают нормально, используя те же типы данных, и я перебрал свое отображение в десятки раз. Насколько я знаю, я следую всем необходимым соглашениям для получателей и установщиков ...

Во всяком случае, мой вопрос: как я могу отладить эту проблему? Запуск приложения Flex в режиме отладки выдает на консоль некоторые общие ошибки, которые не очень помогают (Ошибка: Ошибка # 1034 : Сбой приведения типа: невозможно преобразовать Object @ 5d1d809 в valueObjects.SomeClass.).

Я новичок во всем этом AMF / Flex + Java, поэтому любые советы будут с благодарностью.

Ответы [ 5 ]

13 голосов
/ 11 июня 2009

Это два инструмента, которые я использую при работе с BlazeDS, AMF и т. Д.:

  • Используйте прокси-инструмент HTTP , который показывает вызовы между вашим клиентом и сервером, например Charles

Charles - это HTTP-прокси / HTTP монитор / обратный прокси, который позволяет разработчик, чтобы просмотреть все HTTP и SSL / HTTPS трафик между их машина и интернет. это включает в себя запросы, ответы и Заголовки HTTP (которые содержат файлы cookie и информация о кешировании).

  • Включите ведение журнала для BlazeDS . В пределах WEB-INF/conf/services-conf.xml понизьте уровень отладки до 'debug', как показано ниже. Вывод, который является довольно подробным, появится в {tomcat-home}/logs/localhost.yyyy-mm-dd.log

    <<code>target class="flex.messaging.log.ConsoleTarget" level="debug">

4 голосов
/ 31 января 2011

Самый простой способ проверить связь между сообщениями AMF сервис-клиентов - это использовать FireFox, установить расширение FireBug и добавить AMF Explorer . Вы можете увидеть структурированные запросы и ответы.

2 голосов
/ 14 июля 2010

Java-класс, который десериализуется на стороне клиента, должен иметь ссылку на объект соответствующего класса AS3 в приложении (mxml или as3). В противном случае класс as3 не будет загружен в файл swf и приведет к десериализации класса java для универсального объекта as3.

обновлено Это произойдет, несмотря на наличие карт, геттеров и сеттеров. Просто объявите объект соответствующего класса AS3 в разделе скриптов вашего mxml.

0 голосов
/ 25 марта 2011

Стоит также отметить, что инструментарий в Java также может вызывать потерю информации и / или мешать процессу сериализации и потоку.

Я испытал это TypeError: Error #1034: Type Coercion failed в проекте (Flex <-> BlazeDS + Spring), где наш уровень доступа к данным был реализован с помощью iBatis и с отложенной загрузкой - мы отключили его, поскольку этот показатель представлял меньшая потеря эффективности (теоретически, по крайней мере) по сравнению с другими обходными путями, которые мы использовали.

0 голосов
/ 18 июня 2009

Я использую Flex Builder и настроил его как для отладки на стороне клиента, так и на стороне сервера. Поначалу было сложно настраиваться, но вы можете обратиться к Google за пошаговыми руководствами. Я нахожу это весьма ценным для отладки RPC. В последний раз я проверял, что Flex Builder имеет бесплатную пробную версию и бесплатен для студентов и безработных.

...