我有一个带有GWT客户端的谷歌应用引擎应用程序。大多数服务器功能可以像往常一样通过普通的GWT RPC调用访问。我正在用C ++编写一个数据挖掘应用程序,它需要与appengine应用程序通信。问题是,实现了太多的gwt servlet,因此重写服务器代码是不可能的。
有什么想法吗?
答案 0 :(得分:1)
如果您在客户端上使用Java,则可以使用GWT SyncProxy。虽然这个库的主要用途是测试远程gwt rpc服务,但它可以有效地用于任何目的。当您使用C ++开发客户端时,这可能不是您的选择。
如果您控制GWT应用程序(即您可以重新编译它),您可以可能执行以下操作:
将RPC相关功能导出到javascript中。这使得GWT代码的特定功能可用作主机页面内的普通Javascript函数。有关教程,请参阅this文章
使用类似embedded browser engine的webkit并在其中加载GWT模块脚本。
将导出的GWT函数作为普通的java函数调用。
但它可能会被证明是太多的工作,所以你可能最好重构servlet以暴露另外一个基于JSON / XML的接口。
答案 1 :(得分:0)
解决了,最好的方法就像塔希尔所说的那样。尝试直接从C ++连接到GWT rpcs只是太多的工作。最简单的方法是在服务器端编写瘦包装器作为普通的servlet,并使用来自C ++的http和curl。关于JSON或XML的对象序列化仍然存在一个问题。我选择在我想要序列化的对象字段上编写自定义注释,然后在运行时读取这些注释以便序列化它们。