7

我正在使用 BlazeDS 远程一些我在 Flex 应用程序中使用的 Java 对象。我的一个课程出现类型强制错误,我一生都无法弄清楚。我有其他类使用相同的数据类型运行良好,而且我已经检查了我的映射十几次。据我所知,我正在遵循 getter 和 setter 的所有必要约定......

无论如何,我的问题是:我该如何调试这个问题? 在调试模式下运行 Flex 应用程序会向控制台输出一些一般性错误,这些错误并没有太大帮助(TypeError: Error #1034: Type Coercion failed: cannot convert Object@5d1d809 to valueObjects.SomeClass.)。

我是整个 AMF / Flex + Java 的新手,所以任何提示都将不胜感激。

4

5 回答 5

13

这是我在使用 BlazeDS、AMF 等时使用的两个工具:

  • 使用显示客户端和服务器之间调用的 HTTP 代理工具,例如Charles

Charles 是一个 HTTP 代理 / HTTP 监视器 / 反向代理,它使开发人员能够查看他们的机器和 Internet 之间的所有 HTTP 和 SSL / HTTPS 流量。这包括请求、响应和 HTTP 标头(其中包含 cookie 和缓存信息)。

  • 打开 BlazeDS 的日志记录。在 内WEB-INF/conf/services-conf.xml,将调试级别降低到 ' debug',如下面的代码片段所示。相当详细的输出将出现在{tomcat-home}/logs/localhost.yyyy-mm-dd.log

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

于 2009-06-11T06:36:35.013 回答
4

检查服务客户端 AMF 消息之间通信的最简单方法是使用 FireFox,安装FireBug扩展并添加AMF Explorer。您可以看到结构化的请求和响应。

于 2011-01-31T11:25:26.437 回答
2

在客户端反序列化的 java 类必须具有对应用程序中相应 AS3 类的对象(mxml 或 as3)的引用。否则,as3 类将不会加载到 swf 文件中,并将导致将 java 类反序列化为通用 as3 对象。

更新尽管有映射、getter 和 setter,这仍会发生。只需在 mxml 的脚本部分声明相应 AS3 类的对象。

于 2010-07-14T18:04:48.910 回答
0

我使用 Flex Builder 并将其设置为用于客户端和服务器端调试。一开始设置很痛苦,但你可以谷歌搜索分步教程。我发现它对于调试 RPC 非常有价值。最后我查了一下,Flex Builder 有免费试用版,对学生和失业者免费。

于 2009-06-18T09:18:33.537 回答
0

还值得注意的是,Java 中的检测也可能导致信息丢失和/或干扰序列化过程和流。

TypeError: Error #1034: Type Coercion failed在一个项目 (Flex<->BlazeDS+Spring) 中遇到过这种情况,我们的数据访问层是用 iBatis 实现的,并且开启了延迟加载 - 我们将其关闭,因为该措施代表效率损失较小(理论上,至少),与我们现有的其他解决方法相比。

于 2011-03-25T15:59:23.023 回答