*
* @param serviceInterfaceName
* @return an instance of the service which belongs to exactly this usersession (= user scope)
*/
public Object getServiceInstance(Class serviceInterfaceName) {
ServiceCreatorFactory scf = (ServiceCreatorFactory) ServiceFactory.getService(ServiceCreatorFactory.class);
String key = serviceInterfaceName.getName();
synchronized(this) { //o_clusterOK by:fj // also helper classes and timers and so on may ask for a service -> sync on instance
Object cachedService = sessionServiceInstances.get(key);
if (cachedService == null) {
cachedService = scf.createNonNullServiceFor(serviceInterfaceName);
sessionServiceInstances.put(key, cachedService);
}
return cachedService;
}
}