我有一个用例,我的 GWT 应用程序在客户端浏览器上运行,我停止了我的 tomcat 并更新了相关的 WAR。
我想要发生的是,一旦我加载了 tomcat,每个现有的客户端都会自动重新加载,因此他们将使用正确版本的应用程序。
目前我面临两个问题:
- 我不知道如何向当前加载的应用程序发出信号,表明它已过时并且应该重新加载。我正在考虑以某种方式在我的应用程序中确定 GWT-RPC 失败的原因是 404,因此它应该重新加载,但我不确定如何确定这一点。当然,我不能在每个 GWT-RPC 上重新加载,因为服务器可能会无缘无故地关闭,并且会在一两秒内备份而不会出现问题。
- 出于某种原因,moduleName.nocache.js 文件被缓存,所以即使我手动刷新我也可以在服务器上看到 404 请求,因为应用程序正在寻找不存在的资源(以前的版本),一旦我删除缓存浏览器解决了这个问题。有谁知道为什么要缓存它?在这方面,我对服务器设置没有任何改变。
编辑:
1. 似乎没有 GWT 直接的方法可以做到这一点,所以我决定当一个模块加载时,它会收到一个module version
,一个 Double,如果 GWT-RPC 失败,模块会向服务器查询其当前module version
和如果不匹配,它会重新加载页面。用于查询模块版本的 GWT-RPC 是恒定的,不会出于兼容性原因而更改。这样,即使所有其他 GWT-RPC 方法更改了模块,也可以保证此方法有效。
2. 多亏了 BalusC 的建议,该文件似乎只缓存了 5-10 分钟,这就是为什么我一直在该区域看到非确定性行为。我打开了另一个问题关于如何在单个 js 文件上设置标头,因为我在某处读到它与容器相关而不是与 GWT 相关。谢谢,
伊泰