【问题标题】:Is it possible to send GWT-RPC calls to another server?是否可以将 GWT-RPC 调用发送到另一台服务器?
【发布时间】:2014-05-26 10:39:57
【问题描述】:

假设我已经关注 GWT 服务:

@RemoteServiceRelativePath("greet")
public interface GreetingService extends RemoteService {
    String greetServer(String name) throws IllegalArgumentException;
}

我在 myserver1.com 上构建和部署客户端代码,但我的 servlet 位于 myserver2.com(例如 http://myserver2.com/gwt-module-base/greet),并且 server1 允许 server2 的跨域资源共享。
现在,问题来了:我如何将 gwt-rpc 调用以问候服务发送到 myserver2.com 而不是 myserver1.com

【问题讨论】:

    标签: ajax gwt service gwt-rpc cross-domain-policy


    【解决方案1】:

    您唯一需要的是在 myserver2.com 中启用CORS。我前段时间为 gwtquery 文档编写了一个过滤器。它也适用于 RPC 和 RF。

    https://code.google.com/p/gwtquery/wiki/Ajax#CORS_(Cross_Origin_Resource_Sharing)

    [编辑]

    您必须以这种方式配置您的服务传输:

    GreetingServiceAsync greetingService = GWT.create(GreetingService.class);
    ((ServiceDefTarget)greetingService).setServiceEntryPoint("myserver2.com/greet");
    greetingService.greetServer(....)
    

    【讨论】:

    • 我想你误解了我的问题,我的意思是如何告诉 GWT 将请求发送到 server2 而不是 server1。无论如何,我找到了解决方案!可以在创建代理对象时完成:GreetingServiceAsync proxy = GWT.create(GreetingService.class); ((ServiceDefTarget)proxy).setServiceEntryPoint("http://myserver2.com/gwt-module-base/greet");
    • 在 setServiceEntryPoint 参数中,使用 GWT.getHostPageBaseURL() 作为服务器 url 前缀,例如,GWT.getHostPageBaseURL() + "gwt-module-‌​base/greet"。
    • 感谢 CORSFilter 的实施!效果很好!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多