我目前正在使用 Preferences API 将设置保存在 Vaadin 应用程序中。该应用程序在 Tomcat 服务器上运行了 3 个 WebApp。据我所知,Tomcat 服务器上运行的每个模块都有一个 ClassLoader,但它都在一个虚拟机中运行。
任何人都可以向我解释为什么 Java Preferences 在多个 ClassLoader 上工作吗?我找不到任何来源,也没有通过调试找到任何东西。
十分感谢。
我目前正在使用 Preferences API 将设置保存在 Vaadin 应用程序中。该应用程序在 Tomcat 服务器上运行了 3 个 WebApp。据我所知,Tomcat 服务器上运行的每个模块都有一个 ClassLoader,但它都在一个虚拟机中运行。
任何人都可以向我解释为什么 Java Preferences 在多个 ClassLoader 上工作吗?我找不到任何来源,也没有通过调试找到任何东西。
十分感谢。
我找到了答案:
您可以通过调用获得一个 Preferences 对象:
Preferences prefs = Preferences.userRoot().node("test);
Preferences 和 PreferencesFactory 由 Bootstrap ClassLoader 加载,因此对于每个模块都是相同的(ClassLoader 在 Apache 中的工作方式),并且因为对象是在 PreferencesFactory 中创建的,所以它不是在 WebApp 上下文中创建的。