【问题标题】:How to invoke a gwt rpc servlet from c or c++ client using libcurl?如何使用 libcurl 从 c 或 c++ 客户端调用 gwt rpc servlet?
【发布时间】:2011-10-13 16:53:00
【问题描述】:

我有一个带有 GWT 客户端的谷歌应用引擎应用程序。大多数服务器功能都可以像往常一样通过正常的 GWT RPC 调用来访问。我正在用 C++ 编写一个需要与 appengine 应用程序通信的数据挖掘应用程序。问题是,实现的 gwt servlet 太多了,所以重写服务器代码是不可能的。

有什么想法吗?

【问题讨论】:

    标签: java c++ gwt rpc libcurl


    【解决方案1】:

    如果您在客户端上使用 java,则可以使用 GWT SyncProxy。虽然这个库的主要用例是测试远程 gwt rpc 服务,但它可以有效地用于任何目的。当您使用 C++ 开发客户端时,这可能不适合您。

    如果您控制 GWT 应用程序(即您可以重新编译它),您可以可能执行以下操作:

    1. 将 RPC 相关函数导出到 javascript。这就是使您的 GWT 代码的特定功能可以在主机页面中作为普通的 Javascript 函数调用。教程见this文章

    2. 使用 embedded browser engine 之类的 webkit 并在其中加载您的 GWT 模块脚本。

    3. 将导出的 GWT 函数调用为普通的 java 函数。

    但这可能会证明工作量太大,因此您最好重构 servlet 以公开除 RPC 之外的另一个基于 JSON/XML 的接口。

    【讨论】:

      【解决方案2】:

      已解决,最好的方法是按照 Tahir 的建议。尝试直接从 C++ 连接到 GWT RPC 工作量太大。最简单的方法是将服务器端的瘦包装器编写为普通的 servlet,并使用 C++ 中的 http 和 curl。一个关于对象序列化为 JSON 或 XML 的问题仍然存在。我选择在要序列化的对象字段上编写自定义注释,然后在运行时读取这些注释以序列化它们。

      【讨论】:

      • 有几个库可以轻松实现 POJO -> JSON 转换。例如,请参阅 GSONXStream。 XStream 主要用于 XML,但也可以处理 JSON。
      • 另请参阅 Restlet,它可能会帮助您解决双向问题,并且已经有 C++ 的 REST 库。
      猜你喜欢
      • 2016-09-15
      • 1970-01-01
      • 1970-01-01
      • 2016-06-28
      • 1970-01-01
      • 2012-05-14
      • 1970-01-01
      • 1970-01-01
      • 2013-11-17
      相关资源
      最近更新 更多