java - JSP 是否只运行 JAR 的单个实例

标签 java jsp jar epub

我有一个 JSP,它接受 EPUB 文件作为上传,然后使用 JAR 文件对 EPUB 进行一些检查/验证。

我让它工作正常,但是当我测试从 2 个不同的选项卡(tab1tab2)使用 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/

相关文章:

java - JSP - 错误java.lang.String没有属性

在 Java 中获取文件路径时出现 java.lang.NullPointerException(通过 jar 文件执行)

java - NoSuchMethodError : freemarker. 模板.配置

java - 导出的jar文件执行后卡住

java - 如何将 rowmapper 中的结果集转换为枚举?

java - 在 Java 中使用内部类 - 枚举

java - 访问 couchbase 中的 jsonObject 时出错

Java有没有办法加载一个已经由系统类加载器加载的类?

java - 如何从直接从另一个 jsp 检索值的 jsp 向 servlet 发送值

jsp - 如何将隐藏字段中的数据从一个jsp页面传递到另一个jsp页面?