Использование аспектов для внедрения InvocationHandlers без класса Proxy

Я хочу создать класс, который передает все вызовы методов своему суперклассу с информацией журнала (например, до / после операторов, например).

Однако среда, использующая этот класс, будет загружать его с помощью нового вызова (..) или других механизмов отражения, поэтому я не могу использовать семантику Proxy для запуска класса.

Есть ли способ заставить операции new и newInstance() использовать Proxy во всех случаях - или мы должны явно создавать экземпляры класса InvocationHandler, используя Proxy API?

В частности: я отлаживаю распределенную среду, которая уже имеет свой собственный способ создания экземпляров классов из файлов XML во время выполнения (hadoop - mapreduce).

1 ответ

Я не думаю, что вы можете легко исправить патч на Java. Я думаю, что вы можете попробовать AOP или взломать класс напрямую (так как у вас будет исходный код, поскольку он hasoop). В противном случае я думаю, что рефлексия или модификация байтового кода может быть вариантом, но все они будут очень неприятными. Прямой взлом класса и использование взломанной банки - для меня это самый простой способ.

Кстати привет:)

Другие вопросы по тегам