Я использую кластерную среду Weblogic 10g для развертывания моего приложения.В моем приложении я использовал класс Cache.java
для ленивой загрузки некоторых свойств из базы данных.Вот как это работает.Cache.java
- это одноэлементный класс с переменными экземпляра в качестве объектов кэша.Например, одна из переменных экземпляра - List<String> STORES_IN_CITY
.Этот кэш нулевой, когда кластеры запускаются.Фактические значения находятся в базе данных.Реализация класса приведена ниже:
public class Cache
{
private List<String> STORES_IN_CITY;
private static final Cache cache=new Cache();
public static Cache getCache()
{
return cache;
{
private Cache()
{
// private constructor to have singleton class
}
public List<String> getStoresInCity()
{
if(null==STORES_IN_CITY || STORES_IN_CITY.size()==0){
STORES_IN_CITY=getStoresFromDatabase();
}
return STORES_IN_CITY;
}
}
Мой вопрос здесь заключается в том, что существует несколько обращений к базе данных для получения кэша STORES_IN_CITY.Я полагаю, что это связано с кластерной средой, поскольку для каждого сервера существует отдельный экземпляр JVM и копия кэша.Таким образом, в зависимости от того, на каком сервере выполняется запрос во время выполнения, выполняется вызов базы данных.Я хочу иметь один кеш на всех серверах.Возможно ли это?
Надеюсь, я достаточно подробно изложил свой вопрос.Если понадобится какое-либо дальнейшее объяснение, пожалуйста, дайте мне знать.
Спасибо, Сиддхарт