Files
java-design-patterns/service-locator/src/main/java/com/iluwatar/ServiceLocator.java
T
2014-12-06 13:59:41 +02:00

38 lines
1.0 KiB
Java

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;
}
}
}