调用 GWT RPC 服务
Posted
技术标签:
【中文标题】调用 GWT RPC 服务【英文标题】:Calling GWT RPC service 【发布时间】: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 的位置。 【参考方案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 Policy。 CORS 可以在这里提供帮助,但您将失去与 IE 的兼容性(包括 IE9)。你最好坚持提供同源的所有东西。
【讨论】:
以上是关于调用 GWT RPC 服务的主要内容,如果未能解决你的问题,请参考以下文章
调用 RPC 时出错 - GWT,404 服务器响应状态为 404(未找到)