我有一个如下所示的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));
答案 0 :(得分:0)
谁说你需要这样做?它只是缓存JNDI查找的结果。在某些情况下,JNDI查找可能变慢,因此缓存它们可能是一个好主意。
但是,我会发现你是否真的需要这样做。 JNDI查找可能足够快。如果是,请将serviceCache
取出。