Estoy tratando de agregar un comportamiento personalizado a las clases del sistema (FileInputStream/FileOutputStream). Escribí ClassFileTransformer personalizado con el siguiente método de la transformada:¿Cómo instrumentar las clases del sistema Java?
public byte[] transform(ClassLoader arg0, String arg1, Class arg2, ProtectionDomain arg3, byte[] arg4) throws IllegalClassFormatException {
System.out.println("class name: " + arg1);
return arg4;
}
Cuando programa de ejemplo corro:
public static void main(String[] args) throws Exception {
new FileOutputStream("file");
}
veo que no hay clases de sistema no se pasan a transformarse.
¿Hay alguna manera de modificar las clases del sistema? ¡Gracias por adelantado!
Hubiera esperado que se aprobaran las clases del sistema, ya que muchas herramientas como los profilers se basan en este comportamiento. –
Se pueden agregar varios ClassFileTransformer para evitar problemas con muchas herramientas. También hay normas/lineamientos/recomendaciones sobre cómo transformar las clases – dernasherbrezon