package com.iluwatar; /** * The service locator module. * Will fetch service from cache, otherwise creates a fresh service and update cache * * @author saifasif * */ public class ServiceLocator { private static ServiceCache serviceCache = new ServiceCache(); /** * Fetch the service with the name param from the cache first, * if no service is found, lookup the service from the {@link InitContext} and * then add the newly created service into the cache map for future requests. * @param serviceJndiName * @return {@link Service} */ public static Service getService(String serviceJndiName){ Service serviceObj = serviceCache.getService(serviceJndiName); if ( serviceObj != null ){ return serviceObj; } else { /* * If we are unable to retrive anything from cache, then * lookup the service and add it in the cache map */ InitContext ctx = new InitContext(); serviceObj = (Service) ctx.lookup(serviceJndiName); serviceCache.addService(serviceObj); return serviceObj; } } }