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 > >>> > >> > >