@Override
 public void run() {
   try {
     ThreadLocalServiceContext.init(_serviceContext);
     _delegateRunnable.run();
   } finally {
     ThreadLocalServiceContext.init(null);
   }
 }
 @Override
 public T call() throws Exception {
   try {
     ThreadLocalServiceContext.init(_serviceContext);
     return _delegateCallable.call();
   } finally {
     ThreadLocalServiceContext.init(null);
   }
 }
 private ServiceContextAwareRunnable(Runnable delegateRunnable) {
   _delegateRunnable = delegateRunnable;
   _serviceContext = ThreadLocalServiceContext.getInstance();
 }
 private ServiceContextAwareCallable(Callable<T> delegateCallable) {
   _delegateCallable = delegateCallable;
   _serviceContext = ThreadLocalServiceContext.getInstance();
 }