Использование аспектов для внедрения InvocationHandlers без класса Proxy
Я хочу создать класс, который передает все вызовы методов своему суперклассу с информацией журнала (например, до / после операторов, например).
Однако среда, использующая этот класс, будет загружать его с помощью нового вызова (..) или других механизмов отражения, поэтому я не могу использовать семантику Proxy для запуска класса.
Есть ли способ заставить операции new и newInstance() использовать Proxy во всех случаях - или мы должны явно создавать экземпляры класса InvocationHandler, используя Proxy API?
В частности: я отлаживаю распределенную среду, которая уже имеет свой собственный способ создания экземпляров классов из файлов XML во время выполнения (hadoop - mapreduce).
1 ответ
Я не думаю, что вы можете легко исправить патч на Java. Я думаю, что вы можете попробовать AOP или взломать класс напрямую (так как у вас будет исходный код, поскольку он hasoop). В противном случае я думаю, что рефлексия или модификация байтового кода может быть вариантом, но все они будут очень неприятными. Прямой взлом класса и использование взломанной банки - для меня это самый простой способ.
Кстати привет:)