0

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

当我尝试使用记录错误时,e.getMessage()我收到“未定义”消息。我还尝试使用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); } }

带有错误信息

未处理的对象:未定义

4

1 回答 1

1

我猜您有序列化问题,请记住 Java 序列化与 GWT 序列化不同。

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

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

有关详细信息,请参阅: GWT 序列化

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

于 2012-11-21T12:11:39.973 回答