我有一个常规的 Java 应用程序,并希望访问 GWT RPC 端点。知道如何实现这一目标吗?我的 GWT 应用程序在 GAE/J 上,我可以使用 REST,但我已经有了 GWT RPC 端点,并且不想构建另一个 façade。
是的,我见过直接从 Java 调用 GWT RPC 服务,但这个讨论朝着不同的方向发展。
我有一个常规的 Java 应用程序,并希望访问 GWT RPC 端点。知道如何实现这一目标吗?我的 GWT 应用程序在 GAE/J 上,我可以使用 REST,但我已经有了 GWT RPC 端点,并且不想构建另一个 façade。
是的,我见过直接从 Java 调用 GWT RPC 服务,但这个讨论朝着不同的方向发展。
5 回答
GWT SyncProxy 允许您从纯 Java(而不是 JSNI)代码访问 GWT RPC 服务(e.g 方法)。
有关详细信息,请参阅http://www.gdevelop.com/w/blog/2010/01/10/testing-gwt-rpc-services/。
不幸的是,包
com.google.gwt.user.server.rpc
和com.google.gwt.user.server.rpc.impl
中 RPC 协议的 GWT 中的 Java 实现仅包括请求的反序列化和响应的序列化。真正的工作是在ServerSerializationStreamReader
和ServerSerializationStreamWriter
类中完成的(每行约 750 行代码)。要实现客户端,您显然需要序列化请求并反序列化响应,但由于没有可用于协议的文档和 AFAIK 没有可用的 Java 客户端实现,您可能必须 reverse-engineer(de)serialization 类并编写自己的代码到做一切“反过来”。
你可以找到一些关于协议的 high-level 信息这里
您可以在本文中找到有关 GwtRpcCommLayer 的内容:http://googlewebtoolkit.blogspot.com/2010/07/gwtrpccommlayer-extending-gwt-rpc-to-do.html
不幸的是,我认为 jarnbjo 必须重新实现浏览器的一半 RPC 机制。
或者,如果您最终必须为远程客户端编写 REST 接口,则可以将 GWT 应用程序从 RPC 转移并在那里使用 REST 接口,并在外部客户端和 GWT 的 client-side 接口之间共享客户端库。
我已经探索了所有的答案,今天我成功地成为了一个纯粹的 Java 客户端。
SyncProxy 需要你拥有 GWT project(server 方面的整个代码。为此,您只需创建一个将 SyncProxy 激发到其中的附加类。在这个类中,您应该导入所有需要的类和函数,这就是您需要服务器代码的原因。
你应该检查以下文件是否可以从服务器下载:
我在 cookiemanager 之前添加代码,因为我的服务器端 uri 是 HTTPS。我的类包含一个登录操作然后触发 GWT 请求。这是我的 code(I 已经升级了 SyncProxy,因为它不支持 cookie/session auth check.):
您可能想要的一些外部链接:
https://code.google.com/p/gwt-syncproxy/wiki/QuickStart http://cancerberonia.blogspot.de/2012/10/testing-gwt-service-classes.html