【问题标题】:GWT: Integrating 3rd party webservices and exposing via REST / gwt-RPC to gwt-clientGWT:集成第 3 方 Web 服务并通过 REST / gwt-RPC 向 gwt-client 公开
【发布时间】:2012-05-04 14:00:18
【问题描述】:

我是一名经验丰富的 Java 开发人员,但对 GWT 很陌生。

考虑一个基于第 3 方 http POST 的 webservices api,它不完全基于 REST,因为除其他外,还有 servlet 配置来调用这些服务。我正在构建 gwt 组件来扩展基本 gwt 组合,并使用这些 3rd 方数据服务来获取/改变数据。

在普通的 Java 世界中,我会在这些服务上构建一个 REST 包装器,并通过 JaxB Xml/Json 将它们公开为 Pojos。然而,在 GWT 中,考虑到所需的序列化,我读到 GWT-RPC 将是最快的。预计数据会很大(数千个,分页)。

在 3rd 方数据服务和 gwt 客户端组件之间设计“桥梁”的最佳方式是什么?

  1. 我排除了 RequestFactory,因为我们有一个由第三方提供的自定义 servlet,用于获取 Web 服务。
  2. 添加一个 rest 包装器会添加一个感觉太重的第 3 层间接(第 3 方 api+rest+gwt-rpc 序列化)

关于低延迟设计的建议,我不必为每个服务调用 (pojo) 编写太多包装类?

我想在服务器端考虑 jaxb,将模式作为新合约,并将它们转换为 JSON 用于 gwt-client。

【问题讨论】:

  • 值得指出的是,RPC 与 RF 一样,需要自己的 servlet,尽管您将其扩展为提供方法而不是使用它来引用服务方法和实体。
  • 请注意Same origin policy,它需要从同一服务器加载 GWT JavaScript,因为您希望稍后与 AJAX 通信。仅出于这个原因,您可能需要一个额外的服务器端层。

标签: gwt rest gwt-rpc


【解决方案1】:

我在服务器端使用 RestEasy,它使用 Hibernate JPA 访问数据库。稍加修改,我应该能够切换到 Datanucleus JPA。

我在客户端使用 RestyGWT。

仔细考虑 DTO,我能够 - 在服务器和客户端之间共享相同的 DTO - 在服务器和客户端之间共享相同的 REST 接口(在服务器端 REST 接口上运行脚本以将返回类型转换为异步回调之后)。

Integrating multiple GWT applications into a pluggable platform.

目前我还在尝试将 JPA DTO 与 REST DTO 合并,以便在服务器、数据库和客户端之间拥有一组 POJO。因此,每个 DTO POJO 都会混合使用 JAX-RS、JAXB、Jackson JSON 和 JPA 注释。

为了减少不必要的客户端-服务器流量,我使用 JSP 作为 GWT 托管文件与 GWT Dictionary 类一起将所有特定于会话的会话静态信息传输到客户端。

【讨论】:

  • 很好的解耦解决方案。但是,我想知道是否值得努力包含几个框架、库、代码库以解决一个简单的问题:将服务响应 xml 编入浏览器客户端 dto。在花了几天时间研究这些技术之后,我决定放弃所有这些,并使用带有 GWT RequestBuilder 的 RPC 和一个简单的 Xml 解析器解决方案。最后,只是不值得尝试变得聪明。
【解决方案2】:

我的建议是使用 Spring RestTemplate、Gwt-RPC 并拥有一个 RemoteServiceServlet/Spring 桥 - 这将通过来自服务器客户端的 POJO 和一个干净的层为您提供 RPC 调用以与您的外部 Web 服务进行通信..

这将是轻量级和干净的..

【讨论】:

  • 不能使用 Spring(虽然我很熟悉它)但我认为 Restlet 的 gwt 扩展或 RestGWT 可能会工作。您是否建议这样:gwt-client => gwt-rpc (client) => rest-module (gwt-server),将 xml 转换为 pojo => 3rd party webservices?
  • 是的 - 差不多就是这样 - 也克服了同源政策
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-22
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 2013-03-20
相关资源
最近更新 更多