我正在尝试弄清楚如何将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
。
所以我问:我如何“连接”这两个(RequestFactory
和HttpServlet
)概念,以便GWT客户端应用程序可以将HTTP / S发送到GAE后端,这是servlet-驱动?有没有办法保持上面“Pizza App”中提出的架构,或者在部署到GAE时是否需要不同的架构/方法?
事实上,想想看,这个问题不仅适用于GAE,还适用于任何标准的Java Web容器:Tomcat,JBoss,Jetty ......
更新:我刚刚找到了GWT's Request Framework的代码示例,似乎可能正是我正在寻找的。但是,这似乎与RequestFactory
没有任何关系,所以我有点困惑/担心,如果我使用该链接中的类,我将失去{{{ 1}}。
答案 0 :(得分:0)
您必须将RequestFactoryServlet
映射到/gwtRequest
(这是客户端DefaultRequestTransport
中的默认值)。其他一切都是通过反思完成的。
参见http://blog.ltgt.net/gwt-211-requestfactory/(这与GWT 2.1.1有关; RF在GWT 2.4中发生了很大变化,但总体思路仍然相同)