2013-07-19 58 views
0

我目前正在使用Preferences API將設置保存在Vaadin應用程序中。 該應用程序在Tomcat服務器上運行3個WebApps。 據我所知,Tomcat服務器上運行的每個模塊都有一個ClassLoader,但它全部運行在一臺虛擬機中。使用多個ClassLoaders的首選項API?

任何人都可以向我解釋爲什麼Java首選項在多個ClassLoaders上工作嗎?我無法找到任何來源,我沒有找到任何調試。

非常感謝。

+0

你究竟是什麼意思不工作?你確定你想在多用戶環境中使用首選項嗎?它更適用於桌面應用程序。 – Thilo

+0

不工作,你啓動兩個應用程序,改變一個首選項,並在另一個應用程序中使用get-Methods(運行在不同的JVM中),並且更改不會顯示([請參閱問題5](http:// docs.oracle.com/javase/7/docs/technotes/guides/preferences/designfaq.html))。我已經實現了一個Wrapper類來保存可以正常工作的用戶首選項。 – iliketocodeandstuff

+0

不是說問題5意味着你所描述的情況不能保證起作用嗎?它會怎樣?不同的JVM不會互相對話,那麼他們將如何得到變化的通知? – Thilo

回答

0

我已經找到了答案:

您可以通過調用得到一個首選項對象:

Preferences prefs = Preferences.userRoot().node("test); 

偏好和PreferencesFactory由引導類加載器加載的,所以它是每一個模塊相同(how ClassLoader work in Apache ),並且由於該對象是在PreferencesFactory中創建的,因此它不會在WebApp上下文中創建。