Что хранит context.lookup?
У меня есть ServiceLocator, показанный ниже
public class ServiceLocator {
private static ServiceLocator serviceLocator = null;
InitialContext context = null;
HashMap serviceCache = null;
public ServiceLocator() throws NamingException {
context = new InitialContext();
serviceCache = new HashMap(5);
}
public synchronized static ServiceLocator getInstance()
throws NamingException {
if (serviceLocator == null) {
serviceLocator = new ServiceLocator();
}
return serviceLocator;
}
public Object getService(String jndiName) throws NamingException {
if (!serviceCache.containsKey(jndiName)) {
serviceCache.put(jndiName, context.lookup(jndiName));
}
return serviceCache.get(jndiName);
}
}
Может кто-нибудь сказать мне, почему мы должны хранить имя JNDI таким образом?
serviceCache.put(jndiName, context.lookup(jndiName));
1 ответ
Решение
Кто сказал, что тебе нужно это сделать? Это просто кэширование результатов поиска JNDI. При определенных обстоятельствах поиск JNDI может быть медленным, поэтому кэширование их может быть хорошей идеей.
Я бы выяснил, нужно ли тебе это делать. Поиски JNDI могут быть достаточно быстрыми самостоятельно. Если так, то возьмите serviceCache
из.