我有一个 JSP,它接受 EPUB 文件作为上传,然后使用 JAR 文件对 EPUB 进行一些检查/验证。
我让它工作正常,但是当我测试从 2 个不同的选项卡(tab1 和 tab2)使用 JSP 页面并为每个选项卡上传不同的文件时,两个页面的结果仅针对其中 1 个选项卡(tab1 或 tab2),并且 tomcat 服务器随后关闭。
我检查了控制台,它有一个
java.util.ConcurrentModificationException
我认为这是由我的 JAR 文件包含静态变量引起的。
所以我的问题是,即使我使用 2 个浏览器,JSP 是否也只运行 JAR 的单个实例?
如果是这样,修复静态变量是我唯一的选择还是我还能做些什么?
最佳答案
每个 Web 应用程序只有一个类加载器。 JSP(Web 应用程序的一部分)使用仅加载一次的 JAR。因此,静态变量在所有请求之间共享,并且内容被覆盖。您需要将变量设置为非静态并在每个 JSP 中创建一个新实例来进行处理。
关于java - JSP 是否只运行 JAR 的单个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39324467/