setAccessible() alternative with Jigsaw - feedback on Lookup

Matej Novotny manovotn at redhat.com
Thu Apr 27 09:41:58 UTC 2017


Alan, Remi, Andrew - thanks to you all for the examples/links, I will look into it when I got a spare moment.


Also to answer Alan's previous question:

> If you can find the defining loader of
> org.jboss.weld.proxies.util.Map$Proxy then I think it would be useful to
> this discussion. If the defining loader is your own implementation then
> there be no issue invoking that class loader's defineClass (from the
> right context of course).

I inspected the currect code and the defining loader in EE (on Wildfly) was ModuleClassLoader, which is an additional CL on top of Application CL (so its Boot->Ext->App->ModuleCL).
This creates a special module layer in wfly. However, to my knowldege, Weld does not really have control over this. And even if we had, we still need a portable way - same stuff needs to work in, say, Glassfish.
If we are talking Weld SE, than Application CL does the defining (sun.misc.Launcher$AppClassLoader).
Not sure if this is exactly what you asked for, I am relatively new to this and trying to learn more about CLs as we speak.

Matej


----- Original Message -----
> From: "Alan Bateman" <Alan.Bateman at oracle.com>
> To: forax at univ-mlv.fr, "Matej Novotny" <manovotn at redhat.com>
> Cc: jigsaw-dev at openjdk.java.net, "Tomas Remes" <tremes at redhat.com>, "Martin Kouba" <mkouba at redhat.com>
> Sent: Wednesday, April 26, 2017 5:40:09 PM
> Subject: Re: setAccessible() alternative with Jigsaw - feedback on Lookup
> 
> On 26/04/2017 16:31, forax at univ-mlv.fr wrote:
> 
> > :
> >    4. create a classloader
> >       ClassLoader classLoader = new ClassLoader(parentClassLoader()) { /*
> >       make defineClass more visible */};
> >    5. create your own layer [4]
> >       ModuleLayer layer = boot.defineModulesWithOneLoader(cf, classloader;
> >    6. profit (i.e. now you can call define class on your classloader)
> >
> At #5 then you probably want defineModules(cf, m -> classloader);
> 
> -Alan
> 


More information about the jigsaw-dev mailing list