Я впервые использую java.util.concurrency
framework. Вот очень упрощенная версия того, что я делаю. Для тех, кто не совсем знаком с фреймворком, future.get()
выполняет объект Callable
, определенный в будущем. future.getOriginatingRequest()
возвращает объект, который я установил в будущем для использования объектом Callable
, и я просто пытаюсь записать, какой объект исходного запроса не удался (достаточно знать его имя класса).
try {
future.get();
} catch (ExecutionException e) {
logger.error("Failed to execute future with id '" +
future.getOriginatingRequest().getClass().getName() + "'");
}
Проблема, с которой я столкнулся, заключается в том, что каркас журналирования выводит следующее:
Failed to execute future with id '$Proxy22'
Таким образом, вместо реального имени класса я получаю $Proxy22
или какой-то другой номер. Есть ли способ получить реальное имя класса, а не имя прокси? Бонусные баллы - это то, что кто-то может четко объяснить, почему я получаю строку прокси!