【问题标题】:Is there anything in Java to to change the scope of system properties to WAR?Java中是否有任何东西可以将系统属性的范围更改为WAR?
【发布时间】:2019-04-23 20:49:27
【问题描述】:

我有一个 WAR,其中一个讨厌的库会执行诸如 System.setProperty("javax.xml.stream.XMLInputFactory", ...) 之类的操作,这会破坏 Web 服务器容器,因为后者取决于同一属性的值(详情 here)。

在处理大量此类行为不端的代码之前(是的,它甚至没有被分解),我想检查是否有一些工具(例如,特殊的类加载器)能够维护 WAR 级别的范围最少可写属性,以便这些更改将保留在我的 Web 应用程序中,并且不会干扰 Web 容器或其他 WAR。

【问题讨论】:

  • 战争建立在什么框架上?
  • @Compass,这有什么关系?最终,它是 Tomcat 或 Jetty 下的标准 WAR。无论如何,它是一个使用 Spring + Maven 构建的 API。
  • 你能向那个行为不端的库的开发者提交一份错误报告吗?或者,如果它是开源的,请自行修复?
  • @Robert,遗留代码,开发人员几年前已经转移到其他地方。我可以自己修复它,但这意味着要翻阅数十个具有该复制/粘贴错误代码的文件。
  • 这里有一个教训:使用系统属性时,选择一个不同的属性名称。例如,使用使用它的包的名称来限定属性名称:“my.framework.compressStrings”,而不仅仅是“compressStrings”。

标签: java


【解决方案1】:

据我所知,没有任何东西可以用来缩小系统属性的范围。

这里有很多相关信息: Scope of the Java System Properties

【讨论】:

  • 谢谢,我已经看过了,很明显这些属性是在每个 JVM 实例级别上的。
猜你喜欢
  • 1970-01-01
  • 2010-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-27
  • 1970-01-01
  • 1970-01-01
  • 2013-10-31
相关资源
最近更新 更多