【问题标题】:GWT RPC method call fails without error messageGWT RPC 方法调用失败且没有错误消息
【发布时间】:2012-11-19 11:31:35
【问题描述】:

在 GWT 应用程序中,我有 RPC 接口。有些方法可以正常工作(即RemoeServiceServlet 配置良好),但是当我尝试调用另一个方法时,它总是以onFailure() 方法失败。也不会发生 Ajax 调用(我可以使用 FireBug 看到它,也不会发生在服务器端方法调用),但该服务的另一个方法也执行 Ajax 调用。

当我尝试使用 e.getMessage() 记录错误时,我收到 "undefined" 消息。我还尝试使用try-catch 包装 RPC 调用代码 - 没有错误消息。

这个问题是否与 GWT-RPC 序列化有关?

编辑: Opera Dragonfly 在生成的 JavaScript(使用 PRETTY 模式编译)中的以下方法显示错误:

function $check(this$static, typeSignature){ if (isNull($get_3(this$static.methodMapNative, typeSignature))) { Unhandled Object: undefined throw new SerializationException_1(typeSignature); } }

有错误信息

未处理的对象:未定义

【问题讨论】:

  • 您使用的是哪个 gwt 版本?
  • @RAS 在编译时我得到一个类型为Serializable 的字段警告。但是我在另一个项目中也使用了Serializable字段,所以问题与它无关。
  • @SaddamAbuGhaida 我使用 GWT 2.4
  • 编译时不会出现此类问题。在运行时,在您到达onFailure() 之前检查您的控制台以及开发模式。一定有一些警告可以引导我们。
  • @RAS 谢谢,现在我收到错误消息。请查看编辑后的答案。

标签: gwt rpc


【解决方案1】:

我猜你有一个序列化问题,记住 Java 序列化与 GWT 序列化不同。

在使用 RPC 时,通常没有关于序列化错误的有意义的错误消息。

  • 必须有 0 元构造函数
  • final 字段本质上是瞬态的(即不要在打算序列化的类中使用 final 字段)
  • 集合(例如 List 和 Set)必须使用 @gwt.typeArgs 进行注释。 @gwt.typeArgs 是一个 JavaDoc 注释,因此它必须包含在 JavaDoc 注释中 例如:/** @gwt.typeArgs */

更多详情见: GWT Serialization

要尝试的另一件事: 从 eclipse-plugin 运行 GWT 时,会在 eclipse 项目中创建一个文件夹(我相信它称为 gwt-unitCache)。有时我自己的 GWT 项目生病并输出奇怪的异常,我可以通过删除文件夹并再次运行项目来解决这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多