调用GWT RPC服务

时间:2012-12-18 15:02:01

标签: 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服务。我有这个工作,但只有当服务器是localhost时。 下一步,我将我的应用程序部署到Google App Engine。我现在必须更改什么,因为我在部署应用程序时未调用JavaScript中的RPC服务     http://stockwatcherjf.appspot.com/StockWatcher.html

2 个答案:

答案 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 PolicyCORS可以在此处提供帮助,但您将失去与IE的兼容性(包括IE9)。你最好坚持服从同一个来源的所有东西。