gpt4 book ai didi

jsp - 如果 scratchdir 是只读的,Tomcat 是否会在内存中缓存已编译的 JSP 页面?

转载 作者:行者123 更新时间:2023-11-28 22:13:39 26 4
gpt4 key购买 nike

我在只读文件系统上的 Tomcat 容器中安装了一个 Web 应用程序。结果,我在启动时看到这条消息(更改了实际名称以保护罪犯):

SEVERE: The scratchDir you specified: /readonlyfs/tomcat/work/Catalina/localhost/myApp is unusable.

尽管有这条消息,应用程序似乎在运行,但很难确定,但似乎并未为每次访问编译 JSP 页面。所以,我的问题是,编译后的 JSP 页面会发生什么情况?它们缓存在内存中吗?它们是否无限期缓存?它们是否被缓存?

我需要确切地知道,因为应用程序几乎总是被部署到只读文件系统,如果这会导致性能问题,那么我将不得不更改 scratchdir 以指向另一个文件系统。但是,这会给我想要避免的部署过程带来额外的复杂性。因此,如果性能没有受到影响,即页面缓存在内存中,那么我很乐意不去管它。我意识到序列化的 session 数据会在只读文件系统上丢失,但这与我无关,实际上是一个加号。我只关心编译页面的处理。

最佳答案

看起来 JSP 已经被编译(.class 和 .java 文件是否存在于 $CATALINA_BASE/work 下?)。这就是为什么看起来一切正常。

如果您使用一个空的、只读的工作目录(JSP 引擎将其用于其 scratchDir)启动 Tomcat,您将在尝试访问 JSP 时看到以下内容:

HTTP 状态 500 - java.lang.IllegalStateException:没有输出文件夹

您有几个选择:a) 触摸每个 JSP 以确保它们都已在工作目录中编译,然后将完整的工作目录包含在您的分发中 b) 预编译 JSP

我会说 b) 是更好的选择。

关于jsp - 如果 scratchdir 是只读的,Tomcat 是否会在内存中缓存已编译的 JSP 页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16431077/

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