我正在使用BlazeDS远程访问我在Flex应用程序中使用的一些Java对象。我的一个课程出现了类型强制错误,但我无法解决这个问题。我有其他类使用相同的数据类型工作正常,我已经超过了我的映射十几次。据我所知,我正在遵循吸气剂和制定者的所有必要约定......
无论如何,我的问题是:如何调试此问题?在调试模式下运行Flex应用程序会向控制台发出一些通用错误,这些错误实际上没有多大帮助(TypeError:Error# 1034:类型强制失败:无法将Object @ 5d1d809转换为valueObjects.SomeClass。)。
我是这个AMF / Flex + Java的新手,所以任何提示都会非常感激。
答案 0 :(得分:13)
这是我在使用BlazeDS,AMF等时使用的两个工具:
Charles是一个HTTP代理/ HTTP 监视/反向代理,启用a 开发人员查看所有的HTTP和 他们之间的SSL / HTTPS流量 机器和互联网。这个 包括请求,回复和 HTTP标头(包含 cookie和缓存信息)。
打开BlazeDS的日志记录。在WEB-INF/conf/services-conf.xml
内,将调试级别降低到“debug
”,如下面的snippit所示。输出相当详细,将显示在{tomcat-home}/logs/localhost.yyyy-mm-dd.log
< target class="flex.messaging.log.ConsoleTarget" level="debug"
>
答案 1 :(得分:4)
检查服务客户端AMF消息之间通信的最简单方法是使用FireFox,安装 FireBug 扩展并添加 AMF Explorer 。您可以看到结构化请求和响应。
答案 2 :(得分:2)
在客户端进行反序列化的java类必须引用应用程序中相应AS3类的对象(mxml或as3)。否则,as3类将不会加载到swf文件中,并导致将java类反序列化为泛型as3对象。
已更新尽管有映射,getter和setter,但仍会发生这种情况。只需在mxml的脚本部分声明相应AS3类的对象。
答案 3 :(得分:0)
我使用Flex Builder并将其设置为客户端和服务器端调试。首先设置起来很痛苦,但是您可以通过Google逐步进行教程。我觉得调试RPC很有价值。最后我查了一下,Flex Builder有一个免费试用版,对学生和失业者免费。
答案 4 :(得分:0)
值得注意的是,Java中的检测也会导致信息丢失和/或干扰序列化过程和流。
我在一个项目(Flex< - > BlazeDS + Spring)上体验过这个TypeError: Error #1034: Type Coercion failed
我们的数据访问层是用iBatis实现的,并且启用了延迟加载 - 我们将其关闭了与我们采用的其他变通办法相比,衡量标准代表了较低的效率损失(理论上至少)。