单个GWT应用程序的多个RequestFactory servlet

时间:2012-02-16 14:24:33

标签: gwt requestfactory

有可能吗? 这怎么可以实现?

动机 - 我想要一个用于用户供应的安全(SSL)服务(密码......),以及一个非安全的服务。

1 个答案:

答案 0 :(得分:1)

Ashwin Desikan在http://code.google.com/p/google-web-toolkit/

上回答了我的问题

引用:


吉拉德, 您可以拥有多个RequestFactoryServlet。看看下面的例子。 如果仔细观察,我会有不同的网址映射。你将会有 定义要与之关联的单个RequestTransports 您的客户端中的url-mapping。

此外,您必须控制每个操作所公开的操作 requestFactories在您的客户端。你总是可以有一个基地工厂 您可以在哪里提供常用功能并仅将安全功能移动到 SecuredRequestFactory

在使用之前,我建议使用这种方法 RequestFactories会检查您的代码以确定用户是否是 登录。如果登录,则对所有请求使用安全servlet。

例子;

* web.xml *

<filter> 
<filter-name>AuthFilter</filter-name> 
<filter-class>com.example.server.gae.GaeAuthFilter</filter-class> 
</filter> 
<filter-mapping> 
<filter-name>AuthFilter</filter-name> 
<servlet-name>authRequestFactory</servlet-name> 
</filter-mapping> 
<servlet> 
<servlet-name>authRequestFactory</servlet-name> 
<servlet-class>com.google.web.bindery.requestfactory.server.RequestFactoryS ervlet</servlet-class> 
</servlet> 
<servlet> 
<servlet-name>unAuthRequestFactory</servlet-name> 
<servlet-class>com.google.web.bindery.requestfactory.server.RequestFactoryS ervlet</servlet-class> 
</servlet> 
<servlet-mapping> 
<servlet-name>unAuthRequestFactory</servlet-name> 
<url-pattern>/unsignedRequest</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
<servlet-name>authRequestFactory</servlet-name> 
<url-pattern>/signedRequest</url-pattern> 
</servlet-mapping> 

客户

*//AuthenticatedRequestTransport* 

public class AuthenticatedRequestTransport extends DefaultRequestTransport { 
     /** 
      * default constructor. 
      * 
      */ 
     public AuthenticatedRequestTransport() { 
         super(); 
         //set the url 
         String requestURL = GWT.getHostPageBaseURL() + "signedRequest"; 
         setRequestUrl(requestURL); 
     } 
} 

*//Un-Authenticated Request* 
public class UnAuthenticatedRequestTransport extends 
DefaultRequestTransport { 
     public UnAuthenticatedRequestTransport() { 
         super(); 
         //set the url 
         String requestURL = GWT.getHostPageBaseURL() + "unsignedRequest"; 
         setRequestUrl(requestURL); 
     } 
} 

问候 阿什温