the 'enforced' security is a side effect of the modules. It's a half baked OSGi.
Btw, does your hack also work on OSGi?
Have not looked at the commit yet due to time constraints :(

LieGrue,
strub


> Am 12.06.2019 um 08:11 schrieb Romain Manni-Bucau <rmannibu...@gmail.com>:
> 
> 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
>>>>> 
>>>> 
>> 
>> 

Reply via email to