首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么maven-jetty-plugin 8配置允许在JSP文件更改时重新加载?

什么maven-jetty-plugin 8配置允许在JSP文件更改时重新加载?
EN

Stack Overflow用户
提问于 2012-10-26 18:43:52
回答 3查看 2.9K关注 0票数 3

考虑一下Maven中的默认webapp配置(对于测试用例,我使用了来自https://repository.apache.org/content/groups/public/archetype-catalog.xml的struts2空白原型)。

这个原型随maven jetty插件的版本6而来。使用下面的配置,如果我更改/src/main/webapp/WEB/下的jsp并保存它,刷新浏览器将显示这些更改。

<plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> <version>6.1.21</version> <configuration> <scanIntervalSeconds>10</scanIntervalSeconds> </configuration> </plugin> (注意,我们甚至不需要放置scantarget元素,因为我们不需要在更改jsp时重新加载完整的容器)。

但是,--插件的第8版完全相同的配置(参见下文)--不起作用。如果我更改相同的jsp,刷新浏览器将显示旧的JSP内容。只有停止并启动服务器,我才能看到更改。

<plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>8.1.7.v20120910</version> <configuration> <scanIntervalSeconds>10</scanIntervalSeconds> </configuration> </plugin>

这个配置有什么问题,什么配置会在版本8中产生相同的结果(即,在不重新启动服务器的情况下自动刷新jsp内容)?

编辑:,这是一个2分钟的测试,您可以尝试:

  1. 创建原型struts2-原型-约定("mvn原型:生成“,308,包war)。
  2. 编辑pom并将jetty插件配置设置为上面列出的配置(版本6)
  3. mvn码头:运行
  4. 打开"http://localhost:8080“上的浏览器
  5. 见页面上的“语言”
  6. 编辑/src/main/webapp/WEB/content/hello.jsp-更改其他内容的“语言”。保存。
  7. 刷新浏览器并查看更改。
  8. 重复这些步骤。在步骤2中,将artifactId和版本更改为上面列出的版本(版本8)。
  9. 在JSP中执行更改后,确认页面在刷新时不会更改。
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-02 09:47:01

在之前的评论之后,我能够找出这个问题的根源。虽然这有点特定于我们的用例,但我还是要与社区分享这一点。

这基本上是由文件的时间戳造成的。我的工作目录是另一个服务器的NFS挂载。由于一些奇怪的原因,那个服务器上的时钟被延迟了。这意味着,如果是9:00,并且我更改了JSP文件,该文件将被加盖8:40的时间戳。

Jetty中关于JSP文件重新加载的策略可能已经从6更改为8--而Jetty 6似乎并不关心文件的时间戳和刷新,Jetty 8更敏感,也不会重新加载文件。

因此,这里的“解决方案”只是更新远程NFS服务器的时钟。

*意味着NTP deamon正在运行,我可以平分ntp服务器,相同网络上的其他机器具有相同的NTP设置,但这台机器仍然存在时钟漂移。

票数 0
EN

Stack Overflow用户

发布于 2012-10-31 00:24:29

已经有了一系列的改进插件,从码头-6天运行各种不同的项目配置。查看插件的文档页面,选择最适合您需要的场景,并根据需要调整配置。我怀疑你的案子是在“运行一个未组装的网络应用程序”之下。

Plugin

我将注意到,对于jetty-9,我们终于将插件带向eclipse,这样它就可以使用将groupId更改为org.eclipse.jetty的项目,jetty plugin为9.0.0.M2将于下周初在中央版(文档也将更新)。

干杯

票数 1
EN

Stack Overflow用户

发布于 2012-11-02 05:10:46

mmalmeida,我已经使用标准的测试了这个场景。我在src/main/webapp/jsp中放了一个jsp,它转发到src/main/webapp/WEB中的另一个jsp。用mvn jetty启动jetty插件:运行,转发将正确进行。如果我保持插件运行并修改WEB中的jsp,并在浏览器上执行shift-重新加载,它将像预期的那样拾取更改的页面。

请注意,您不需要声明scanTargets或其他任何性质的东西。上述行为(jsp重新加载)是jsp引擎的一个函数,在开发模式下运行时,jsp引擎在接收请求时将检查jsp文件上的时间戳,并在必要时动态重新编译。

我认为您必须提供更多关于特定get应用程序的详细信息--特别是您的设置与我刚才描述的测试场景有何不同--以便进一步了解这一点。

问候简

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

https://stackoverflow.com/questions/13092601

复制
相关文章

相似问题

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