agent de Java, l'instrumentation et la création de tableau
-
15-10-2019 - |
Question
Je dois écrire un agent pour mon application java, qui fait des trucs spécifiques à chaque création de tableau. Jusqu'à présent, je ne pouvais pas trouver un moyen d'utiliser mon code sur cet événement.
- java.lang.instrument.ClassFileTransformer ne reçoit pas « classes de tableau », donc aucun moyen de crochet dans « constructeur de tableau ». Et « classes de tableau ne sont jamais modifiables »
- aucun événement JVMTI correspond à cette
Toutes les suggestions?
La solution
Vous devez modifier l'octet code de votre application pour le faire. J'ai trouvé ObjectWeb ASM pour être le meilleur outil pour le travail. L'idée générale est de:
- Créer un agent JVMTI qui intercepte les cours qui vous intéressent.
- Faites passer les classes à l'instrument à un transformateur de classe ASM.
- Dans le transformateur de classe, vous pouvez intercepter les opcodes Java liées à la construction d'un tableau, par exemple ANEWARRAY (voir pour plus spec JVM ) .
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow