GWT和GAE:如何将RequestFactory服务器代码与Servlet链接?

时间:2012-10-30 11:22:03

标签: java google-app-engine gwt servlets requestfactory

我正在尝试弄清楚如何将GWT应用部署到Google App Engine。从this page on using JSPs开始,看起来GAE期待一个基于HttpServlet的普通网络应用,与典型的处理程序一起使用:

public class MyServlet extends HttpServlet {
    public void doPost(HttpServletRequest req, HttpServletResponse resp) {
        // Handle the HTTP request here and return a response
    }
}

在阅读GWT文档并观看多个Google I / O视频后,我确信我想使用GWT的RequestFactory选项而不是传统的GWT-RPC方法进行客户端 - 服务器通信。

在研究如何使用RequestFactory的示例时,我发现this simple example提出了以下类架构:

Client-Side:
    PizzaProxy - client-side proxy for Pizza.class
    PizzaRequestFactory - RF impl
    PizzaRequestContext - RF context impl

Server-Side:
    Pizza - the entity
    PizzaDao - DAO for entity
    DaoLocator - ServiceLocator for all DAOs
    PizzaLocator - Locator for entity

首先,我会说看到这个规范化的代码我感到有些惊讶,但是如果每个实体的性能得到回报,或者仅仅提供好的旧的好处,那么不要介意这种架构。塑造干净的代码。

最重要的是,我没有看到GAE想要的内容与RequestFactory似乎提供的内容之间的联系(在服务器端)。换句话说,我看到了RequestFactory服务器端代码的示例,无论如何都是HttpServlet

所以我问:我如何“连接”这两个(RequestFactoryHttpServlet)概念,以便GWT客户端应用程序可以将HTTP / S发送到GAE后端,这是servlet-驱动?有没有办法保持上面“Pizza App”中提出的架构,或者在部署到GAE时是否需要不同的架构/方法?

事实上,想想看,这个问题不仅适用于GAE,还适用于任何标准的Java Web容器:Tomcat,JBoss,Jetty ......

更新:我刚刚找到了GWT's Request Framework的代码示例,似乎可能正是我正在寻找的。但是,这似乎与RequestFactory没有任何关系,所以我有点困惑/担心,如果我使用该链接中的类,我将失去{{{ 1}}。

1 个答案:

答案 0 :(得分:0)

您必须将RequestFactoryServlet映射到/gwtRequest(这是客户端DefaultRequestTransport中的默认值)。其他一切都是通过反思完成的。

参见http://blog.ltgt.net/gwt-211-requestfactory/(这与GWT 2.1.1有关; RF在GWT 2.4中发生了很大变化,但总体思路仍然相同)