content: package com.iluwatar.servicelocator;
  
  /**
   * 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 a string
       * @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;
          }
      }
  }
  