首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使gwt-同步代理工作

无法使gwt-同步代理工作
EN

Stack Overflow用户
提问于 2015-02-16 22:28:14
回答 4查看 513关注 0票数 0

我正在尝试获得一个非常简单的gwt-syncproxy示例,以便在模式下工作。我创建了示例GWT/GAE项目,并将其命名为"testgwtrpc“。我验证了这对于发送问候语和接收服务器响应是有效的。我创建了下面的独立Java程序来调用GWT。

代码语言:javascript
复制
    SyncProxy.setBaseURL("http://127.0.0.1:8888/testgwtrpc/");
    GreetingServiceAsync greetingServiceAsync = SyncProxy.create(GreetingService.class);
    greetingServiceAsync.greetServer("Hello", new AsyncCallback<String>() {

        @Override
        public void onFailure(Throwable caught) {
        }

        @Override
        public void onSuccess(String result) {
            System.out.println("From server: " +result);
        }
    });
}

我从SyncProxy.setBaseURL()中得到以下异常

代码语言:javascript
复制
INFO: No RemoteService in the classpath
Feb 16, 2015 5:10:19 PM com.gdevelop.gwt.syncrpc.SyncProxy populatePolicyMap
INFO: Populating Policy Map
Exception in thread "main" com.gdevelop.gwt.syncrpc.exception.SyncProxyException: Error POLICY_NAME_POPULATION. Unable to populate policy names, see below exception.
  at com.gdevelop.gwt.syncrpc.SyncProxy.populatePolicyMap(SyncProxy.java:515)
  at com.gdevelop.gwt.syncrpc.SyncProxy.setBaseURL(SyncProxy.java:532)
  at com.ptflix.utilities.CallGwtRpc.main(CallGwtRpc.java:12)
Caused by: java.io.FileNotFoundException: http://127.0.0.1:8888/testgwtrpc/compilation-mappings.txt
  at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1835)
  at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1440)
  at com.gdevelop.gwt.syncrpc.RpcPolicyFinder.getResposeText(RpcPolicyFinder.java:201)
  at com.gdevelop.gwt.syncrpc.RpcPolicyFinder.fetcherSerializationPolicyNameJS(RpcPolicyFinder.java:68)
  at com.gdevelop.gwt.syncrpc.RpcPolicyFinder.fetchSerializationPolicyName(RpcPolicyFinder.java:180)
  at com.gdevelop.gwt.syncrpc.SyncProxy.populatePolicyMap(SyncProxy.java:513)
  ... 2 more

这看起来应该很简单,但是,唉,它不起作用。

知道为什么吗?非常感激的帮助。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-02-17 15:40:15

来自@JCricket和@Ahmed的综合回答提供了我需要的信息来完成这项工作。非常感谢你们俩。我决定合并你的答案,以便给出一个更完整和明确的答案给下一个有同样问题的人。

正如JCricket所说,您必须进行GWT编译,因为gwt-syncproxy从App应用程序下载了几个文件,包括编译-mappings.txt和*.gwt.rpc文件。GWT编译生成这些文件。但是,您会发现,通过gwt-syncproxy进行的RPC调用仍然失败,除非您指定到app引擎以允许客户端下载*.gwt.rpc文件。这是按照艾哈迈德这里给出的链接所描述的。具体来说,在appengine-web.xml的“静态-文件”部分中,更改:

代码语言:javascript
复制
<exclude path="**.gwt.rpc" /> to <include path="**.gwt.rpc" />

还有一件事:

当从客户端应用程序调用SyncProxy.setBaseURL()时,我使用了以下URL:

http://127.0.0.1:8888/testgwtrpc/

其中"testgwtrpc“是模块名,在我的.gwt.xml文件中重命名。

我还没有在生产模式中尝试过这一点,只有开发模式。

票数 1
EN

Stack Overflow用户

发布于 2015-02-17 09:33:02

检查这个链接

无法找到RPC编译您的web-app,请确保您的服务运行在您期望的位置(部署与本地测试urls),如果使用GAE,请确保如Android#Setup_in_Eclipse部分中所述修改appEng-web.xml。本质上,您需要确保.gwt.rpc文件可以从“远程”Android客户端访问。

票数 1
EN

Stack Overflow用户

发布于 2015-02-17 12:54:05

确保您已经执行了GWT-编译(IE右键单击了testgwtrpc项目Google->GWT-Compile)。Eclipse和Dev模式中的测试不需要这些文件,因为它是由GWT的托管服务器系统处理的。但是独立系统和Android系统是分开的,因此需要访问GWT编译创建的文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28551494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档