正在调用GWT RPC服务



我在https://developers.google.com/web-toolkit/doc/latest/tutorial/RPC

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

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

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

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

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会话中搜索一些关于GWTRPC使用的更深入的内容。

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

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

最新更新