首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GWT无缝部署

GWT无缝部署
EN

Stack Overflow用户
提问于 2011-09-07 18:48:22
回答 1查看 209关注 0票数 1

我想让GWT应用程序的部署变得轻而易举。这是当新版本的gwt应用程序被上传时,应该通知在其浏览器中具有旧版本客户端代码的用户。之后,用户可以刷新浏览器以获取最新版本。

我找到了一篇描述如何做到这一点的文章:http://www.draconianoverlord.com/2010/07/07/gwt-seamless-upgrades.html

我面临的问题是,当发出rpc请求时,它会失败,这是正确的行为。但是,我没有在onFailure方法中获取IncompatibleRemoteServiceException,而是获取了StatusCodeException (500服务器上的调用失败;有关详细信息,请参阅服务器日志)。IncompatibleRemoteServiceException异常在服务器端抛出,但是客户端没有关于它的信息。

如何解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2011-09-07 21:55:00

首先,我不认为这个“食谱”是好的。RemoteServiceServlet为您提供了为请求加载适当的序列化策略的钩子,这意味着允许“旧客户端”与“新服务器”对话,并且在默认情况下它实际上应该做正确的事情:简单地将新代码与旧代码一起部署(您可以在删除旧的*.cache.html和*.cache.js之前保留一段时间,以帮助无缝地迁移客户端,而不会出现GWT.runAsync问题;在这里,重要的是将旧的*.gwt.rpc文件保留在服务器上)。

但是请注意,使用RequestFactory进行此类升级要比使用GWT-RPC容易得多,因为RF在构建之间生成稳定的模糊名称,这些名称仅依赖于接口或方法名称,而不依赖于其签名或类中字段的类型和数量(就像在GWT-RPC中一样)。

即使您重命名了接口或方法,您也应该能够通过抛出一个ServiceLayerDecorator来执行从旧名称到新名称的转换,从而提供一个转换路径。

不过,为了帮助诊断您的问题:在服务器端抛出的IncompatibleRemoteServiceException在哪里?在哪里办理呢?您的服务器日志中显示了什么内容?

免责声明:除了原型之外,我实际上从未使用GWT-RPC部署过任何东西,因为原型不需要无缝升级,所以上面的内容更像是在阅读GWT-RPC内部代码后的猜测。

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

https://stackoverflow.com/questions/7332578

复制
相关文章

相似问题

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