gpt4 book ai didi

jsp - tomcat 服务缓存别名

转载 作者:行者123 更新时间:2023-11-28 22:29:57 25 4
gpt4 key购买 nike

我正在尝试在两个位置提供一个 jsp 文件。 (jsp 文件使用 request.getRequestURI() 来决定要提供的内容。)我在下面使用 web.xml

<welcome-file-list>
<!--no / here or url pattern will need //-->
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Main</servlet-name>
<jsp-file>/index.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>Main</servlet-name>
<url-pattern>/advanced/</url-pattern>
</servlet-mapping>

虽然它工作正常,但 tomcat 似乎将 jsp 缓存在 /advanced/ 而不是在 / 服务的那个。我怎样才能解决这个问题,使两者都一样? (我不想为开发缓存,只为生产缓存。)

我在 tomcat 的 work 目录中只能看到一个 java 文件,所以我想这个问题与我使用的 jsp 无关,而是与我设置映射的方式有关.

编辑: 我检查了 curl 中的 header ,我可以看到 tomcat 没有发送 Last-Modified header ,所以我不明白为什么任何浏览器会缓存它。此外,使用 curl,我可以看到/在我更新 jsp 时更新,但/advanced/没有。

EDIT2: 我在 org.apache.jasper.compiler.Compiler#isOutDated(boolean) 上花了一些时间,我发现只有第一个 URL我访问的是标记为过时的那个。我访问的第二个 URL 从未标记为过时。因此,就好像 tomcat 保留了两个 JspServlet 实例,但共享文件的相同 outDated 信息,所以当一个 JspServlet 将其标记为 outDated 并设置 reload,第二个 JspServlet 从不重新编译它,也不提供重新编译的版本。我该如何解决/解决这个问题?

最佳答案

如果您认为这是 tomcat 中的错误,open a bug report .开发人员通常会很快对错误进行分类。这个错误刚刚被fixed并将在 7.0.62 和 8.0.22 中。

关于jsp - tomcat 服务缓存别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24567224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com