我一直在浏览谷歌教程(我觉得非常好) 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服务。我有这个工作,但只有当服务器是localhost时。 下一步,我将我的应用程序部署到Google App Engine。我现在必须更改什么,因为我在部署应用程序时未调用JavaScript中的RPC服务 http://stockwatcherjf.appspot.com/StockWatcher.html
答案 0 :(得分: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使用的更深入的内容。
答案 1 :(得分:0)
@RemoteServiceRelativePath
给出了servlet相对于GWT.getModuleBaseURL()
的路径(它或多或少是*.nocache.js
脚本的URL);它不会只是通过魔法工作"。
如果您将服务部署在与提供客户端代码的服务器不同的服务器上,那么您可能会点击Same Origin Policy。 CORS可以在此处提供帮助,但您将失去与IE的兼容性(包括IE9)。你最好坚持服从同一个来源的所有东西。