get-sync proxy - Web Project和Android App之间的RPC

时间:2013-12-02 13:48:32

标签: gwt rpc gwt-syncproxy

我试图让我的Android应用程序与我的GWT WebProject(GWT 2.5.1)进行通信...通常我从代码角度确定它,但我一直有代码导入问题......

最初,当我尝试使用SyncProxy从android项目实例化它们时,我会在RPCService和RPCServiceAsync类上获得NoClassDefFoundError,并且它们是在Web项目中定义的......即使移动项目依赖于构建中的Web项目-path它没有将web项目代码导出到移动apk ...我想这可能是因为GWT编译实际上将事物转换为javascript而不是构建jar但不确定...

我继续将RPCService和RPCServiceAsync文件移动到andoird项目,但将RPCServiceImpl保存在web项目中并切换依赖项(即web项目依赖于android)...我现在不再获取NoClassDefFoundError而是syncproxy失败,说它无法在类路径中找到策略文件...这是因为策略文件驻留在Web项目的WAR目录中...

在我看来,我错误地拆分我的项目,我想知道最好的方法是什么?我如何更新将导出rpc策略文件和/或其java类的GWT应用程序?

THX

2 个答案:

答案 0 :(得分:0)

首先,您的初始设置是正确的。最好在Web应用程序中定义服务接口,并从那里绘制Android应用程序。我不确定您使用的IDE是什么,但在Eclipse中,您要在构建路径对话框中使用的功能称为链接源。使用此方法,您可以将构建路径直接指向Web应用程序的服务接口,以便与Android应用程序一起编译(而非对照)。

作为简要参考,请参阅SyncProxy项目中Android wiki的 Eclipse中的安装程序部分:https://code.google.com/p/gwt-syncproxy/wiki/Android。另请查看常见问题维基。 https://code.google.com/p/gwt-syncproxy/wiki/CommonIssues

需要注意的是,它最终运作的方式并不是Web应用程序将代码导出到Android项目。实际上,Android项目会将代码从GWT应用程序源路径导入到自己的源层次结构中。

关于您收到的第二个错误,“丢失”的策略文件,尝试在项目上运行GWT编译,并确保您的appengine-web.xml文件(如果使用GAE作为您的服务后端)已被修改为在wiki中定义(我刚做了一些更新)。

最后,您可能会遇到一个错误。由于您使用的是 GWT 2.5.1 ,如果您没有使用最新版本的SPALibrary,可能会遇到序列化问题。我现在正在查看测试的反馈,并且应该在几个小时内在网站上下载该文件。如果针对GWT 2.5.1 ServiceImpl运行,请确保使用0.4.1 Android库。

答案 1 :(得分:0)

我也被这个错过了,但现在经过两天的调试。我对此更加清楚。

SyncProxy需要您拥有GWT项目的整个代码(服务器端)。 为此,您只需创建一个将SyncProxy激发到其中的附加类。在这个类中,您应该导入所有需要的类和函数,这就是您需要服务器代码的原因。

并且必须将“* .gwt.rpc”文件(在服务器端生成)放到此项目的类路径中。

我认为这足以解雇SyncProxy。