GWT - 将客户端和服务器拆分到不同的机器

Posted

技术标签:

【中文标题】GWT - 将客户端和服务器拆分到不同的机器【英文标题】:GWT - split client and server to different machines 【发布时间】:2012-06-28 08:32:47 【问题描述】:

我们的实验室有一台机器可以从外部打开 http 连接。但是,这台机器很弱(内存小,CPU 慢)。我们还有其他更强大的机器,但它们位于防火墙后面,无法从实验室外部访问。

我正在编写一个 GWT 应用程序,它的服务器要求很高。是否可以将服务器安装在强计算机上,将客户端安装在弱计算机上,并让它们使用 RPC 连接?我认为它需要对 web.xml 文件进行一些更改,但究竟是什么?

理论上我可以将要求的部分包装在单独的 TCP/IP 服务器中,并让 GWT 服务器与其联系,但我想知道是否可以直接在 GWT 中进行。

【问题讨论】:

【参考方案1】:

GWT 客户端从服务器下载并在 Web 浏览器中作为 javascript 代码运行。我不太明白您希望在单独的服务器上运行 GWT 应用程序的哪个部分。

如果您的 GWT servlet(RPC 服务实现)正在访问外部资源,例如数据库或 Web 服务,您可以将这些资源移至单独的服务器。

另一种选择是在“弱”服务器上安装反向代理,将特定请求转发到防火墙后面更强大的服务器。代理可以由“弱”服务器上的 Apache (httpd) 完成(使用 mod_proxy)。那么Tomcat只需要安装在更强大的机器上,并且会负责大部分处理。

【讨论】:

我想我会采用反向代理选项 - 这听起来是最通用的解决方案。【参考方案2】:

我曾尝试这样做,但仅成功地将 GWT 项目拆分为 3 个部分(客户端、RPC、服务器)作为 eclipse 项目。最后,您将得到 1 个大 WAR 文件,并将其部署在一个地方(除非其他人成功地真正分离了代码。)

您可以做的一个解决方案是设置另一台服务器,该服务器将执行所有服务器端处理(您的强大机器)并让 GWT servlet 充当代理。它们接受来自客户端的请求并将数据转发到另一台服务器进行处理。然后等待响应。

如何做取决于你。您可以使用 Web 服务、直接套接字连接、JMS ..等。

【讨论】:

【参考方案3】:

取决于您的设置。

GWT ACRIS-Please see this link.

EJB - 一种方法是将远程机器中的业务对象作为 EJB 保存,而您的 servlet 通过 RMI/JNDI 访问它们。

Spring - 另一种简单的方法是使用 Spring Remoting。 See this link.

【讨论】:

以上是关于GWT - 将客户端和服务器拆分到不同的机器的主要内容,如果未能解决你的问题,请参考以下文章

如何修复多项目 GWT 设置中的 RPC 错误 IncompatibleRemoteServiceException?

GWT 将大量数据从服务器发送到客户端的最佳实践

如何将 URL 参数从 GWT 客户端发送到服务器端进行验证

GWT RequestFactory 并将服务器端更改传播到客户端

将 SOAP 添加到现有 GWT 解决方案

GWT 保持同步客户端和服务器模型