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

Eclipse 什么maven jetty plugin 8配置允许在JSP文件更改时重新加载它们?,eclipse,maven,struts2,jetty,maven-jetty-plugin,Eclipse,Maven,Struts2,Jetty,Maven Jetty Plugin,考虑Maven中的默认webapp配置(对于我使用的测试用例,我使用了struts2 blank原型) 这个原型与maven jetty插件的版本6一起提供。使用下面的配置,如果我更改/src/main/webapp/WEB-INF/下的jsp并保存它,刷新浏览器将显示这些更改 org.mortbay.jetty maven jetty插件 6.1.21 10 (请注意,甚至不需要放置scantarget元素,因为我们不希望在更改jsp时重新加载完整的容器) 但是,与插件版本8完全相同的配置

考虑Maven中的默认webapp配置(对于我使用的测试用例,我使用了struts2 blank原型)

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


org.mortbay.jetty
maven jetty插件
6.1.21
10
(请注意,甚至不需要放置scantarget元素,因为我们不希望在更改jsp时重新加载完整的容器)

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


org.mortbay.jetty
jetty maven插件
8.1.7.v20120910
10
此配置有什么问题,以及什么配置会在版本8中产生相同的结果(即,在不重新启动服务器的情况下自动刷新jsp内容)

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

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

  • 自从jetty-6天以来,插件已经有了很多改进,可以运行各种不同的项目配置。查看插件的文档页面,选择最符合您需要的场景,并根据需要调整配置。我怀疑你的案子是在“运行未组装的网络应用程序”

    我要注意的是,对于jetty-9,我们终于将插件带到eclipse上,这样它就可以与将groupId更改为org.eclipse.jetty的项目一起使用了,用于9.0.0.M2的jetty maven插件将于下周初在central(文档也将为此更新)

    干杯, 我已经使用标准的jetty test webapp测试了这个场景。我在src/main/webapp/jsp中放置了一个jsp,它将转发到src/main/webapp/WEB-INF中的另一个jsp。使用mvn jetty:run启动jetty maven插件时,转发操作正确。如果我让插件保持运行,并在WEB-INF中修改jsp,然后在浏览器上执行shift重新加载,它会按照预期拾取更改的页面

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

    我认为您必须提供有关特定webapp的更多详细信息,特别是您的设置与我刚才描述的测试场景的不同之处,以便进一步了解这一点

    问候
    Jan

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

    这基本上是由文件的时间戳引起的。我的工作目录是另一台服务器的NFS装载。由于某种奇怪的原因,服务器上的时钟延迟了。这意味着,如果是9:00,我更改了JSP文件,该文件的时间戳将为8:40

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

    所以这里的“解决方案”只是更新远程NFS服务器的时钟


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

    遇到相同的问题。该插件的第8版不支持该配置。不过,据我所知,所有配置参数似乎都不会影响这一点。我可能错了,所以你能试一下我刚才在第一个问题中增加的2分钟的步骤吗?请注意,您必须删除该节才能复制此内容。我认为这是明智的,因为当您在开发中编辑JSP时,您不想重新加载整个容器(当您的Web应用程序具有会话变量和安全会话时,它会大大降低开发过程的速度)。因此,您是说,使用scanTargets,它只需重新部署Web应用程序?如果您想要就地进行类文件热交换,那么请查看jrebel,将JSP编译到类中,这样就必须有一种机制来删除它们,然后将它们添加回其中,这是一种重新部署…创建jrebel是为了缓解这类问题,我是说,通过上述配置(没有scantarget)JSP在版本6中刷新,但不在版本8中。你试过了吗?这种回归(因为你在html元素中更改了一个字母,所以重新部署整个应用程序似乎有些过分)是我觉得奇怪的。我要补充的是,唯一的区别是我在mvn cli上使用了-Djetty.port=9999,因为我在默认端口上运行了其他一些东西。这在sim卡中发生
            <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>maven-jetty-plugin</artifactId>
                <version>6.1.21</version>
                <configuration>
                    <scanIntervalSeconds>10</scanIntervalSeconds>
                </configuration>
            </plugin>
    
            <plugin>
                <groupId>org.mortbay.jetty</groupId>
                 <artifactId>jetty-maven-plugin</artifactId>
                 <version>8.1.7.v20120910</version>
                <configuration>
                    <scanIntervalSeconds>10</scanIntervalSeconds>
                </configuration>
            </plugin>