【问题标题】:Calling GWT RPC service调用 GWT RPC 服务
【发布时间】:2012-12-18 15:02:00
【问题描述】:

我一直在浏览谷歌教程(我觉得非常好) https://developers.google.com/web-toolkit/doc/latest/tutorial/RPC

我在本地服务器上启动并运行了该服务,我的 JavaScript 客户端可以正常调用它。到目前为止还可以。现在,我要做的是在远程服务器上部署服务 JoeSoapHost:8080
我现在如何告诉我的客户将它的请求发送到哪里?我看不到在我的 RPC 调用中创建的任何服务器/URL。它只是靠魔法起作用,但现在我想钻到引擎盖下开始打破它。

[编辑} 这是我的客户端用来知道要调用服务器上的什么服务的接口。我知道我的 Web.xml 网络描述符必须有一个与之匹配的 url。它有这个,因为我的服务器调用正常。问题是,如果我现在决定将我的服务器部署到其他地方,我该如何告诉我的客户使用什么服务器/域名?

@RemoteServiceRelativePath("stockPrices")
public interface StockPriceService extends RemoteService 
{
    StockPrice[] getPrices(String[] symbols);
}

我首先要实现的是让一个简单的 GWT 客户端调用 RPC 服务。我有这个工作,但只有当服务器是本地主机时。 下一步,我将我的应用程序部署到 Google App Engine。我现在必须更改什么,因为当我将应用程序部署到时,我的 JavaScript 中的 RPC 服务没有被调用 http://stockwatcherjf.appspot.com/StockWatcher.html

【问题讨论】:

  • 您的客户端是 Java 还是 PHP(非 Java)。如果 JSON + GWT 不是 Java,您可能正在寻找它。您可以在 Chrome 开发工具 (Chrome) 或 Firebug (Firefox) 中监控 ajax 调用。 web.xml 是 URL 从客户端映射到您的 servlet 的位置。

标签: gwt rpc


【解决方案1】:

1) Brian Slesinsky 关于 RPC 的优秀文档 - https://docs.google.com/document/d/1eG0YocsYYbNAtivkLtcaiEE5IOF5u4LUol8-LL0TIKU/edit#heading=h.amx1ddpv5q4m

2) @RemoteServiceRelativePath("stockPrices") 允许 GWT 代码确定相对于您的主机/服务器/域,即 http//mydomain.com/gwtapp/stockPrices

3) 您可以搜索 2009 年至 2012 年的 GOOGle IO Sessions,以获取有关 GWT RPC 使用的更深入信息。

【讨论】:

    【解决方案2】:

    @RemoteServiceRelativePath 给出了 servlet 相对于 GWT.getModuleBaseURL() 的路径(或多或少是 *.nocache.js 脚本的 URL);它不是“靠魔法工作的”。

    如果您将服务部署在与客户端代码不同的服务器上,那么您很可能会遇到Same Origin PolicyCORS 可以在这里提供帮助,但您将失去与 IE 的兼容性(包括 IE9)。你最好坚持提供同源的所有东西。

    【讨论】:

      猜你喜欢
      • 2013-11-24
      • 1970-01-01
      • 1970-01-01
      • 2013-03-20
      • 1970-01-01
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      • 2012-09-14
      相关资源
      最近更新 更多