我正在使用 BlazeDS 远程传输在 Flex 应用程序中使用的一些 Java 对象。我的一个类遇到了类型强制错误,我一生都无法弄清楚。我有其他类可以使用相同的数据类型正常工作,并且我已经检查了我的映射十几次。据我所知,我正在遵循 getter 和 setter 的所有必要约定......

无论如何,我的问题是:我该如何调试这个问题? 在调试模式下运行 Flex 应用程序会向控制台输出一些一般性错误,但这些错误并没有多大帮助(TypeError:错误#1034:类型强制失败:无法将 Object@5d1d809 转换为 valueObjects.SomeClass。)。

我对整个 AMF / Flex + Java 很陌生,所以任何提示将不胜感激。

有帮助吗?

解决方案

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

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

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">

其他提示

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

这是在客户端侧被反序列的Java类必须具有在应用程序(MXML或AS3)对应的AS3类的一个对象的引用。否则,AS3类将不会在SWF文件中加载,并且将导致在反序列化Java类的通用AS3对象。

更新这将发生尽管具有映射,getter和setter。只是声明相应的AS3类的对象在MXML的脚本部分。

我使用Flex生成器,并将它设置为客户端和服务器端调试。这是一个痛苦的率先成立,但你可以谷歌一步一步的教程。我觉得对调试的RPC相当有价值的。上次我检查,Flex Builder中有一个免费试用,免费向学生和失业者。

这也是值得注意的在Java中该仪器也可以导致信息丢失和/或与序列化过程和流干扰。

我已经经历过这种TypeError: Error #1034: Type Coercion failed一个项目(Flex的< - > BlazeDS的+春),其中我们的数据访问层用iBatis的实施,并延迟加载接通 - 我们把它关掉为代表的指标较小损失效率的(理论上,至少),相比于其它的变通方法,我们有在适当位置。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top