if (session == null) {
session = new UserSession();
}
try {
final ServiceManager serviceManager = context.getBean(ServiceManager.class);
serviceManager.dispatch(request, session, context);
} catch (Exception e) {
Log.error(Log.XLINK_PROCESSOR, "Failed to parse result xml" + request.getService());
throw new ServiceExecutionFailedException(request.getService(), e);
} finally {
// set old context back as thread local