【问题标题】:GWT: Separate client- and server-sides into different WARsGWT:将客户端和服务器端分成不同的 WAR
【发布时间】:2012-10-20 20:48:52
【问题描述】:

我正计划构建一个将部署到 GAE 的 GWT 应用程序。除了普通的 (GWT) Web 客户端之外,服务器端代码还将为来自 Web 应用程序之外的其他客户端的请求提供服务。具体来说,它将托管一个 RESTful API,可以从任何符合 HTTP 的客户端访问,它还将为来自 iOS 和 Android 上的本机应用程序的请求提供服务。

如果我对 GWT 的理解是正确的,那么您的工作就是编写客户端代码(包括您的应用向服务器发出的 AJAX 请求)以及服务器端代码 -侧请求处理程序。

这让我想到:为什么我需要将 Web 客户端和 Web 服务器打包在同一个 WAR 中?这迫使我(基本上)每次我想对后端进行更改时重新部署客户端代码。可能没什么大不了的,但如果我不必这样做,我更愿意尊重“关注点分离”。

所以我问:有没有办法在 GAE 上部署一个无 Java 的 WAR,它只将纯 HTML/JS/CSS 提供给任何将使用它的客户端,然后部署服务器-side在自己的WAR中,有的怎么把两者联系起来?提前致谢!

【问题讨论】:

    标签: java google-app-engine gwt


    【解决方案1】:

    WAR 仅适用于服务器端。它包括序列化在客户端和服务器之间传递的对象所需的客户端类:显然,双方都需要实现相同的对象才能处理这些对象。

    我认为将这两个问题分开不会为您节省任何精力或开发时间,但如果您真的想这样做,那么您可以使用 GWT-RPC 以外的方式重新设计您的客户端/服务器交互。例如,JSON。如果您想走这条路,请参阅https://developers.google.com/web-toolkit/doc/latest/DevGuideServerCommunication#DevGuideHttpRequests 讨论您的选择。

    【讨论】:

    • 感谢@aecolley (+1) - 快速跟进:我有兴趣利用新的(呃)RequestFactory(据我了解)不是建立在“较旧”的 GWT-RPC 模型。 RequestFactory 与您发布的链接有什么关系——它们是相同的还是用于不同的目的(如果是,它们有何不同)?再次感谢!
    • RequestFactory 与 GWT-RPC 本身在 stackoverflow.com/questions/4119867/…> 中讨论。在这个问题的上下文中,RequestFactory 可以减少拖入部署服务器的客户端代码量(反之亦然)。
    • 再次感谢@aecolley:这是您在上面提到的一个很好的问题,但是它涉及到决定何时使用 GWT-RPC 以及何时使用 RequestFactory。我已经下定决心使用RequestFactory,所以我很好奇的是您在答案的最后一段中提到的这种“返工”(即JSON等)是否是构成RequestFactory的东西,或者如果它与 RequestFactory 完全不同。如果它是 RequestFactory 的内部胆量,那么我已经准备好了。如果它与 RequestFactory 不同,我很好奇它有何不同。再次感谢!
    • 不,我的意思是您必须根据 (HTTP) RequestBuilder 重写您的应用程序的客户端/服务器通信。工作量更大,但这意味着您可以将服务器实现更改为 Java 以外的其他方式。
    【解决方案2】:

    不,AFAIK,您不能在 GAE 中进行部分更新,即您不能将项目的一部分上传到 GAE 实例,然后单独上传另一部分(因此将 HTNML/JS/CSS 分离到 java 类)。

    【讨论】:

      【解决方案3】:

      希望this 是您想要的。

      最后,您要部署的主存根可能是 EAR 文件,您可以在 main pom.xml 中提及该文件

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-21
        • 2015-02-28
        • 2011-07-05
        相关资源
        最近更新 更多