Я использую кластерную среду Weblogic 10g для развертывания своего приложения. В своем приложении я использовал класс Cache.java
для ленивой загрузки некоторых свойств из базы данных. Вот как это работает. Кэш. java
- это одноэлементный класс с переменными экземпляра в качестве объектов кеша. Например, одна из переменных экземпляра - List
. Этот кеш равен нулю при запуске кластера. Фактические значения находятся в базе данных. Реализация класса приведена ниже:
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 и копия кеша. Таким образом, в зависимости от того, на каком сервере выполняется запрос во время выполнения, выполняется вызов базы данных. Я хочу, чтобы на всех серверах был единый кеш. Возможно ли это?
Надеюсь, я достаточно подробно остановился на своем вопросе. Если потребуются дополнительные пояснения, дайте мне знать.
Спасибо, Например, одна из переменных экземпляра - List
. Этот кеш равен нулю при запуске кластера. Фактические значения находятся в базе данных. Реализация класса приведена ниже:
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 и копия кеша. Таким образом, в зависимости от того, на каком сервере выполняется запрос во время выполнения, выполняется вызов базы данных. Я хочу, чтобы на всех серверах был единый кеш. Возможно ли это?
Надеюсь, я достаточно подробно остановился на своем вопросе. Если потребуются дополнительные пояснения, дайте мне знать.
Спасибо, Например, одна из переменных экземпляра - List
. Этот кеш равен нулю при запуске кластера. Фактические значения находятся в базе данных. Реализация класса приведена ниже:
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 и копия кеша. Таким образом, в зависимости от того, на каком сервере выполняется запрос во время выполнения, выполняется вызов базы данных. Я хочу, чтобы на всех серверах был единый кеш. Возможно ли это?
Надеюсь, я достаточно подробно остановился на своем вопросе. Если потребуются дополнительные пояснения, дайте мне знать.
Спасибо, Этот кеш равен нулю при запуске кластера. Фактические значения находятся в базе данных. Реализация класса приведена ниже:
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 и копия кеша. Таким образом, в зависимости от того, на каком сервере выполняется запрос во время выполнения, выполняется вызов базы данных. Я хочу, чтобы на всех серверах был единый кеш. Возможно ли это?
Надеюсь, я достаточно подробно остановился на своем вопросе. Если потребуются дополнительные пояснения, дайте мне знать.
Спасибо, Этот кеш равен нулю при запуске кластера. Фактические значения находятся в базе данных. Реализация класса приведена ниже:
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 и копия кеша. Таким образом, в зависимости от того, на каком сервере выполняется запрос во время выполнения, выполняется вызов базы данных. Я хочу, чтобы на всех серверах был единый кеш. Возможно ли это?
Надеюсь, я достаточно подробно остановился на своем вопросе. Если потребуются дополнительные пояснения, дайте мне знать.
Спасибо,
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 и копия кеша. Таким образом, в зависимости от того, на каком сервере выполняется запрос во время выполнения, выполняется вызов базы данных. Я хочу, чтобы на всех серверах был единый кеш. Возможно ли это?
Надеюсь, я достаточно подробно остановился на своем вопросе. Если потребуются дополнительные пояснения, дайте мне знать.
Спасибо,
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 и копия кеша. Таким образом, в зависимости от того, на каком сервере выполняется запрос во время выполнения, выполняется вызов базы данных. Я хочу, чтобы на всех серверах был единый кеш. Возможно ли это?
Надеюсь, я достаточно подробно остановился на своем вопросе. Если потребуются дополнительные пояснения, дайте мне знать.
Спасибо, Возможно ли это?
Надеюсь, я достаточно подробно остановился на своем вопросе. Если потребуются дополнительные пояснения, дайте мне знать.
Спасибо, Возможно ли это?
Надеюсь, я достаточно подробно остановился на своем вопросе. Если потребуются дополнительные пояснения, дайте мне знать.
Спасибо, Siddharth