#ReflectiveAccessByInstrumentationAgents

Alan Bateman Alan.Bateman at oracle.com
Thu Apr 21 13:32:06 UTC 2016



On 21/04/2016 12:09, Peter Levart wrote:
> :
>
> The situation is not so complicated, I think. If instrumented code 
> calls some code in your Byteman module(s) then you should 1st make 
> this code public and reside in exported packages. All you have to do 
> then is add read edges from modules of instrumented classes to modules 
> of Byteman classes that are called by instrumented code as they are 
> being instrumented. 
If the instrumentation is just injecting code to call into Byteman then 
I assume it just works now. That is, it doesn't appear that Byteman has 
embraced modules yet and so I assume it must be an agent specified via 
-javaagent with perhaps supporting code in other JAR files. In that 
case, the Byteman code is the unnamed module of the app class loader and 
the VM will automatically add a read edge when the transformer touches 
code in any named module. This is the compatibility support that I 
mentioned in another mail.

If you right this it should be simple as you say. On the other hand, 
some of the mails mention accessing non-public members, setAccessible, 
and even (it would appear) adjusting class loader delegation on the fly 
to facilitate the patches.

-Alan


More information about the jigsaw-dev mailing list