我会先问我的问题,然后再详细说明:
hosted.html
播放什么函数文件DevMode
以及为什么从页面请求它hosted.html?<module-name>
以及如何控制/配置该请求返回的内容?如果有人回答这个问题,我会赞成并接受答案,因为我自己已经找到了第二个和第三个问题的答案,而且它们似乎与我的问题无关。有什么方法可以触发 GWT 缓存刷新而不是普通浏览器
Ctrl-F5
?在我看到的编译clear.cache.gif
文件期间生成的每个模块中 - 它与 GWT 缓存有什么关系吗?已经由我自己回答,在这种情况下似乎没有太大帮助我是否正确指定了路径(见下文)
DevMode
?-war
我应该改为指定src/main/webapp
文件夹的绝对路径吗?已经由我自己回答,在这种情况下似乎没有太大帮助我的设置有什么问题,为什么我会遇到下面描述的问题?(可选择回答,但如果回答正确 - 我会立即投票并接受答案:))
编辑 - 与第一个问题相关的详细信息
所以有 2 个 GWT 模块:在我login
的dashboard
webapp 中。问题是在仅包含模块的DevMode
页面中总是正常加载,发出以下请求login.html
login
GET http://localhost:8080/login/hosted.html?login 200 OK
它返回hosted.html
由 GWT 编译器生成并放入每个模块的文件夹的标准页面。
但是为什么dashboard.html
只包含模块的页面dashboard
无法正常加载,发出以下请求:
GET http://localhost:8080/dashboard/hosted.html?dashboard 304 Not Modified
Cache-Control:private
Date:Tue, 17 Dec 2013 13:07:40 GMT
ETag:W/"11781-1367504122000"
Expires:Thu, 01 Jan 1970 03:00:00 EET
Last-Modified:Thu, 02 May 2013 14:15:22 GMT
Server:Apache-Coyote/1.1
结果令人惊讶地返回login.html
页面,而不是hosted.html
我期望的标准文件。请注意,这在过去半年中很少发生,通过多次按 Ctrl-F5 解决。但从昨天开始,这种情况总是发生。
继续搜索,谁或什么向它提出请求,hosted.html?dashboard
以及谁在以这种奇怪的响应响应它。
编辑#2 - 与第一个问题相关的详细信息
发现问题出在服务器端 - 为什么对第二个请求的响应(如上所述)有状态码304 Not Modified
。在调试 Catalina 代码时,发现问题出org.zeroturnaround.javarebel.integration.fileservlet.FileServlet
在最终为文件提供服务的类上。此类来自JRebel
(版本 5.2.2),它使用 Tomcat-javaagent
选项启动。如果我删除-javaagent
选项并启动 Tomcat,但JRebel
一切正常并提供正确的文件。将尝试更深入地挖掘并找出 JRebel 课程中的问题。
编辑#3 - 与第一个问题相关的细节
升级后JRebel-5.4.2
错误依旧。Zeroturnaround
论坛
开始主题:http: //zeroturnaround.com/forums/topic/gwt-devmode-tomcat-7-0-39-possible-fileservlet-bug/
我的问题的详细描述(没什么有趣的 - 只是细节:)):
我遇到了运行 2 个名为和Devmode
的模块的 webapp问题。Webapp 正在本地部署到标准 tomcat 安装,并且具有如下目录结构:login
dashboard
<tomcat_folder>/webapps/ROOT/login.html
<tomcat_folder>/webapps/ROOT/login/
<tomcat_folder>/webapps/ROOT/login/<single gwt.rpc file>
<tomcat_folder>/webapps/ROOT/login/<multiple .cache.html files>
<tomcat_folder>/webapps/ROOT/login/gwt/<standard files>
<tomcat_folder>/webapps/ROOT/login/clear.cache.gif
<tomcat_folder>/webapps/ROOT/login/login.nocache.js
<tomcat_folder>/webapps/ROOT/login/hosted.html
<tomcat_folder>/webapps/ROOT/dashboard.html
<tomcat_folder>/webapps/ROOT/dashboard/
<tomcat_folder>/webapps/ROOT/dashboard/<two .gwt.rpc files>
<tomcat_folder>/webapps/ROOT/dashboard/<multiple .cache.html, .cache.png, etc files>
<tomcat_folder>/webapps/ROOT/dashboard/gwt/<standard files>
<tomcat_folder>/webapps/ROOT/dashboard/clear.cache.gif
<tomcat_folder>/webapps/ROOT/dashboard/dashboard.nocache.js
<tomcat_folder>/webapps/ROOT/dashboard/hosted.html
<tomcat_folder>/webapps/ROOT/dashboard/<other css and image resources used by page>
<tomcat_folder>/webapps/ROOT/<other files of webapp>
现在,login.html
包含对login.nocache.js
文件的引用,如下所示:
<script src="login/login.nocache.js" type="text/javascript" language="javascript"></script>
dashboard.html
分别包含对dashboard.nocache.js
文件的引用:
<script src="dashboard/dashboard.nocache.js" type="text/javascript" language="javascript"></script>
我使用以下参数启动DevMode
from :Eclipse
-remoteUI "${gwt_remote_ui_server_port}:${unique_id}"
-startupUrl http://localhost:8080/login.html -logLevel INFO
-noserver -war <absolute-path-to-tomcat-folder>/webapps/ROOT
-codeServerPort 9997
org.yura.cases.DashboardModule org.yura.cases.LoginModule
现在,我已经使用这样的设置已经半年了,一切都运行良好,即它可以完美地运行DevMode
,也就是说,95% 的时间我都在成功使用DevMode
- 调试代码,在 Eclipse 中更改它等。
但是,问题是(过去也是),有时,当我打开
http://localhost:8080/dashboard.html?gwt.codesvr=127.0.0.1:9997
页面为空白,我在浏览器控制台中看到以下错误:
GET http://localhost:8080/dashboard/login/login.nocache.js/ 404 (Not Found) hosted.html:10
当我转到hosted.html:10
在页面加载期间加载的文件时,我看到该文件是从以下 URL 加载的:
http://localhost:8080/dashboard/hosted.html?dashboard
并且返回的 HTML 文件确实包含错误的路径login.nocache.js
:
<script src="login/login.nocache.js" type="text/javascript" language="javascript"></script>
(路径错误,因为login/login.nocache.js' is relative path and it resolves to
dashboard/login/login.nocache.js`)
直到今天,我通过简单地按住Ctrl-F5
几秒钟重新加载页面并清除浏览器缓存并最终在DevMode
. 但是,今天,无论我按多久Ctrl-F5
,错误仍然存在。这就是为什么我决定最终一劳永逸地解决这个问题。
提前感谢您的帮助!