context.lookup存储什么?

时间:2011-06-25 13:13:47

标签: ejb

我有一个如下所示的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 个答案:

答案 0 :(得分:0)

谁说你需要这样做?它只是缓存JNDI查找的结果。在某些情况下,JNDI查找可能变慢,因此缓存它们可能是一个好主意。

但是,我会发现你是否真的需要这样做。 JNDI查找可能足够快。如果是,请将serviceCache取出。