Pushed through https://issues.apache.org/jira/browse/OWB-1289
Romain Manni-Bucau @rmannibucau <https://twitter.com/rmannibucau> | Blog <https://rmannibucau.metawerx.net/> | Old Blog <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> | LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book <https://www.packtpub.com/application-development/java-ee-8-high-performance> Le mer. 12 juin 2019 à 08:11, Romain Manni-Bucau <rmannibu...@gmail.com> a écrit : > Oki, will try to push a service this week. > > Side note: I agree on JPMS point but there is no link to jigsaw, it is > linked to the enforced security more than modules. > > Romain Manni-Bucau > @rmannibucau <https://twitter.com/rmannibucau> | Blog > <https://rmannibucau.metawerx.net/> | Old Blog > <http://rmannibucau.wordpress.com> | Github > <https://github.com/rmannibucau> | LinkedIn > <https://www.linkedin.com/in/rmannibucau> | Book > <https://www.packtpub.com/application-development/java-ee-8-high-performance> > > > Le mer. 12 juin 2019 à 07:59, Mark Struberg <strub...@yahoo.de.invalid> a > écrit : > >> +1 if it is switchable to the old mechanism. >> >> When loading the proxy class in a different classloader you cannot access >> any protected or package scoped methods as it is basically treated as >> 'outside'. A package - even if it has the same package name - is only >> treated the same if it is loaded by the very same ClassLoader. Different >> CL, different package so to say. >> >> Plus: Jigsaw doesn't deliver. The adoption rate is sub-stelar. If not to >> say crappy. And for a reason. It doesn't add much benefit from a security >> pot. Especially when compared to the costs. Reminds me a bit to >> SecurityManager. Sounds nice in theory, but is a performance hog and not >> easy to get safe. So almost nobody is using it. I guess the same will >> happen to Jigsaw. >> >> LieGrue, >> Strub >> >> >> > Am 11.06.2019 um 12:37 schrieb Thomas Andraschko < >> andraschko.tho...@gmail.com>: >> > >> > hmmm >> > basically +1 if we can solve the protected/package scoping by a fallback >> > >> > lets wait about mark's opinion? >> > >> > Am Di., 11. Juni 2019 um 11:23 Uhr schrieb Romain Manni-Bucau < >> > rmannibu...@gmail.com>: >> > >> >> Hi guys, >> >> >> >> Do we want to add an option to switch to a classloader based proxy >> >> definition? >> >> >> >> Idea is that instead of using reflection or unsafe to define our >> proxies we >> >> create a class loader - likely in WebBeansContext and shared accross >> all >> >> AbstractProxyFactories. It looks like (ignore the visibility, I took it >> >> from a poc as a nested class): >> >> >> >> private static class InternalClassLoader extends ClassLoader { >> >> private final ConcurrentMap<String, Class<?>> classes = new >> >> ConcurrentHashMap<>(); >> >> >> >> private InternalClassLoader(final ClassLoader >> applicationClassLoader) { >> >> super(applicationClassLoader); >> >> } >> >> >> >> >> >> @Override >> >> protected Class<?> loadClass(final String name, final boolean >> >> resolve) throws ClassNotFoundException { >> >> final Class<?> clazz = classes.get(name); >> >> if (clazz == null) { >> >> return getParent().loadClass(name); >> >> } >> >> return clazz; >> >> } >> >> >> >> private Class<?> getOrRegister(final String proxyClassName, final >> >> byte[] proxyBytes) { >> >> return classes.computeIfAbsent( >> >> proxyClassName.replace('/', '.'), >> >> n -> { >> >> final Class<?> defined = >> >> super.defineClass(proxyClassName, proxyBytes, 0, proxyBytes.length); >> >> resolveClass(defined); >> >> return defined; >> >> }); >> >> } >> >> } >> >> >> >> >> >> Then AbstractProxyFactory would make getProxyClass behaving as - >> assuming >> >> we have proxies the instance of this classloader: >> >> >> >> return proxies;. >> >> >> >> I suspect it can need to use that classloader instead of TCCL for >> >> deserialization but it is not a big deal too. >> >> >> >> The big advantage is to work on java >= 9 without warning (WARNING: >> Illegal >> >> reflective access ) but it has a disavantage to not support >> >> protected/package scope proxying (since we use 2 classloaders). >> >> >> >> If we want to be clever we could use both strategies at the same time, >> i.e. >> >> if we can proxy through this classloader then we do, otherwise we keep >> >> current impl. >> >> >> >> Any opinion? i'd really like to have a clean run on java 11 for 2.0.12 >> or >> >> 2.0.13, even if we must add a few limitations like this visibility >> thing. >> >> >> >> wdyt? >> >> Romain Manni-Bucau >> >> @rmannibucau <https://twitter.com/rmannibucau> | Blog >> >> <https://rmannibucau.metawerx.net/> | Old Blog >> >> <http://rmannibucau.wordpress.com> | Github < >> >> https://github.com/rmannibucau> | >> >> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Book >> >> < >> >> >> https://www.packtpub.com/application-development/java-ee-8-high-performance >> >>> >> >> >> >>