0

我一直在浏览 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。我现在必须更改什么,因为当我将应用程序部署到 http://stockwatcherjf.appspot.com/StockWatcher.html时,我的 JavaScript 中的 RPC 服务没有被调用

4

2 回答 2

0

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 会话,以获取有关 GWT RPC 使用的更深入内容。

于 2012-12-18T15:37:54.167 回答
0

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

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

于 2012-12-18T15:40:35.967 回答